0

使用 Selenium 2.25,我遇到了很多问题。

我正在尝试在我的计算机(本地/客户端)上的远程计算机(服务器)上使用 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 不会让我把它贴在这里。=(

4

1 回答 1

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';
于 2012-08-31T09:41:15.023 回答