2012-07-27 81 views
0

使用Seleneium 2.25时,出现了很多问题。Selenium使用JavaScript或获取元素时出错

我想从我的电脑(本地/客户端)在远程计算机(服务器)上使用Selenium远程驱动程序。然而,当我尝试使用DesiresCapabilities.Htmlunit()它会找到元素,但它说它们不可见。我完全被这个难住了。我不确定为什么可以找到它,但不可见。

那么我试着用一些JavaScript来强制它。它返回并抛出一个错误,指出网页在加载页面之前无法执行JavaScript。当我做了一个暗含的等待并且发现了它正在等待的元素时,这怎么可能?

DesiredCapabilities iecapa = DesiredCapabilities.HtmlUnit(); 
iecapa.IsJavaScriptEnabled = true; 
driver = new RemoteWebDriver(new Uri("http://<IP of server>:4444/wd/hub"), iecapa); 

IJavaScriptExecutor jQuery = ((IJavaScriptExecutor)(driver)); 
addressElement = (IWebElement)jQuery.ExecuteScript("return document.GetElementByName('searchAddress')"); 

所以,如果任何人想要帮助我,将不胜感激!谢谢!

http://imageshack.us/photo/my-images/163/seleniumhtmluniterror.jpg/

那就是错误。 StackOverflow不会让我发布在这里。 =(

回答

0

试试这个:

WebDriverWait wait = new WebDriverWait(driver, new TimeSpan(0, 0, 0, 30)); 
wait.Until(p => driver.FindElement(By.Name("searchAddress"))); 

IJavaScriptExecutor jQuery = ((IJavaScriptExecutor)(driver)); 
addressElement = (IWebElement)jQuery.ExecuteScript("return document.GetElementByName('searchAddress')"); 

您也可以在JavaScript中添加检查:

if (document.readyState.toLowerCase()=="complete") 
return document.GetElementByName('searchAddress'); 
return 'Error';