我测试了一些网站。只是尝试将一些文本放入输入字段(站点URL :)附近。我用硒。我的代码抛出异常。请告诉我为什么?
IWebDriver driver = new FirefoxDriver();
try
{
driver.Navigate().GoToUrl("http://www.w-global.com/index.php/tools-gadgets/online-sitemap-generator");
IWebElement url_parse = driver.FindElement(By.Name("inputurl"));
url_parse.SendKeys("http://test.com");
}
catch (Exception ee)
{
String s = ee.ToString();
}
finally
{
driver.Quit();
}
错误:
OpenQA.Selenium.NoSuchElementException:无法在OpenQA.Selenium.Remote中找到元素:{\“method \”:\“name \”,\“selector \”:\“inputurl \”} \ r \ n。 C:\ Projects \ WebDriver \ trunk \ dotnet \ src \ WebDriver \ Remote \ RemoteWebDriver.cs中的RemoteWebDriver.UnpackAndThrowOnError(响应errorResponse)...
答案 0 :(得分:2)
将IWebElement url_parse = driver.FindElement(By.TagName("inputurl"));
更改为
IWebElement url_parse = driver.FindElement(By.Name("inputurl"));
<强>更新强>
注意到该元素位于iframe内。
在尝试查找元素之前,您需要切换到它。
driver.SwitchTo().Frame("c-analyzer"); #and then
IWebElement url_parse = driver.FindElement(By.Name("inputurl"));
答案 1 :(得分:0)
实际上,来自inputurl
的{{1}}是错误的,因为html来源中没有IWebElement url_parse = driver.FindElement(By.TagName("inputurl"));
标记。
我可以建议什么?
尝试使用此选择器而不是
inputurl
我希望这是您正在寻找的输入。
另外,在写入值之前清除它。因为您的代码将在输入中执行此操作:
IWebElement url_parse = driver.findElement(By.cssSelector("div.mfid-v3 input"));
所以不要忘记http://http://test.com
告诉我发生了什么=)