【问题标题】:Selenium Error when using JavaScript or getting elements使用 JavaScript 或获取元素时出现 Selenium 错误
【发布时间】:2012-07-26 04:25:47
【问题描述】:

使用 Seleneium 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 不会让我把它贴在这里。 =(

【问题讨论】:

    标签: c# jquery selenium-webdriver htmlunit


    【解决方案1】:

    试试这个:

    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';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-08
      • 2017-12-06
      • 1970-01-01
      • 2021-10-18
      • 2021-04-21
      • 1970-01-01
      相关资源
      最近更新 更多