2011-10-09 55 views
0

我在写文档样本像找到元素:硒的webdriver:不能与名字

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(); 

但我总是得到Unable to find element with name == q错误。

IE9打开,谷歌页面加载,我可以阅读driver.Title,但无法通过名称,选择器或ID找到任何元素。

有什么想法?

UPD

可怕的是,这种代码的工作我的桌面上(Windows 7中,相较于2010年快递)和虚拟机不能正常工作(VMware播放时,Windows 2008 R2 SP 1次试验中,VS 2010旗舰版试用):-(

而且它不会有自定义虚拟<input name="q" />

UPD 2工作:

该代码适用于Firefox驱动程序,但不适用于IE。

SOLUTION

似乎喜欢的网站应该是 “可信的” Windows服务器安装。我不知道为什么,但添加google.com来信任解决了一个问题

回答

2

对于Windows服务器安装,该网站应处于“受信任”状态。我不知道为什么,但将google.com添加到可信的问题解决了问题

-1

Zerkms,尝试在您的.navigate语句后放置一些等待时间也使用xpath来定位元素,如果名称不起作用。

+0

是的,我试图放5000ms。 'XPath'不是解决方案,我想使用名称或ID来查找元素。 – zerkms

+3

你可能刚刚发表了评论。 – Baz1nga

0

这个问题可能是由于谷歌搜索框现在在页面加载后加载的事实,因此可能是在硒搜索时控件不存在的情况。

用在这种情况下,在你们应该有下面的代码的方法的自定义搜索方法:

for (var retry = 0; retry < 10; retry++) 
      { 
       try 
       { 
        if (driver.Until(driver => driver.FindElement(searchBy).Displayed)) 
         return; 
       } 
       catch (StaleElementReferenceException) 
       { 
       } 
      } 

希望这有助于。

更新: 此外,由于作者已经提到abt安全问题的IE我想指出,我认为你不必将其设置为可信所有您的网站需要共享相同的安全级别。

+0

我加了一个更新 – zerkms

+0

我也更新了我的答案..你把hv设置为可信 – Baz1nga

+0

没有?但它不起作用 – zerkms