.net Selenium WebDriver:找不到名为的元素
我在文档中编写了如下示例:.net Selenium WebDriver:找不到名为的元素,.net,.net-4.0,selenium,.net,.net 4.0,Selenium,我在文档中编写了如下示例: var driver = new InternetExplorerDriver(); driver.Navigate().GoToUrl("http://google.com"); var query = driver.FindElement(By.Name("q")); query.SendKeys("Cheese"); Console.WriteLine("Title is: " + driver.Title); driver.Quit(); 但我总是得
var driver = new InternetExplorerDriver();
driver.Navigate().GoToUrl("http://google.com");
var query = driver.FindElement(By.Name("q"));
query.SendKeys("Cheese");
Console.WriteLine("Title is: " + driver.Title);
driver.Quit();
但我总是得到无法找到name==q的元素的错误
IE9被打开,google页面被加载,我可以阅读driver.Title
,但无法通过名称、选择器或id找到任何元素
有什么想法吗
UPD:
可怕的是,这段代码在我的桌面(Windows 7,VS 2010 Express)上运行,在虚拟机(VmWare player,Windows 2008 R2 SP 1试用版,VS 2010 Ultimate试用版)上不运行:-(
对于自定义虚拟对象,它不起作用
页面
UPD 2:
该代码适用于Firefox驱动程序,但不适用于IE
解决方案:
似乎该站点应该处于“受信任”状态对于Windows server安装。我不知道为什么,但将google.com
添加到trusted解决了一个问题Zerkms,尝试在您的.navigate语句之后放置一些等待时间。如果按名称不起作用,也可以使用xpath来定位元素。问题可能是因为google搜索框现在在页面加载后加载d因此,当selenium搜索对照品时,对照品可能不存在
在这种情况下,请使用自定义搜索方法,在该方法中,您应具有以下代码:
for (var retry = 0; retry < 10; retry++)
{
try
{
if (driver.Until(driver => driver.FindElement(searchBy).Displayed))
return;
}
catch (StaleElementReferenceException)
{
}
}
for(var retry=0;retry<10;retry++)
{
尝试
{
if(driver.Until(driver=>driver.FindElement(searchBy).displated))
返回;
}
捕获(StaleElementReferenceException)
{
}
}
希望这有帮助
更新:
此外,由于作者提到了IE的安全问题,我想指出的是,我认为您不必将其设置为受信任。所有站点都需要共享相同的安全级别。站点应处于“受信任”状态对于Windows server安装。我不确定原因,但将google.com添加到trusted解决了一个问题是的,我尝试放置5000ms。XPath
不是解决方案,我想使用名称或id查找元素。您可以只添加注释。我也更新了我的答案。您不需要将其设置为trusted