Selenium,点击元素,挂起

时间:2012-05-07 17:13:58

标签: java selenium webdriver

这是关于java中的selenium webdriver。如果单击一个元素,通常会很快,但有时当服务器忙时,它会在浏览器顶部显示正在连接...并挂起。通常要处理等待,代码是:driver.manage().timeouts().implicitlyWait(4, TimeUnit.SECONDS);     但在这种情况下,当服务器挂起click()时,这不会在时间限制之后抛出异常,因为webdriver在点击完成连接到下一个URL之前不会开始计数。有没有人以前处理过这个问题,怎么做?

有没有办法完成click()submit()

3 个答案:

答案 0 :(得分:3)

是的,这是一个已知问题,从Selenium 2.21.0开始,有一种方法可以解决。

问题在于隐式等待是为了在搜索某些元素时等待卸载的元素,但click()方法只是等待浏览器声明页面已完全加载。

尝试driver.manage().timeouts().pageLoadTimeout()这是2.21.0中的一种新方法,应该完全按照这个方法处理。

答案 1 :(得分:2)

Selenium文档声明Click()阻止。如果出于任何原因,Selenium认为该页面未完全加载,那么您的Click将挂起您的测试。

我发现最简单的解决方法是完全跳过click事件并使用:

element.SendKeys(Keys.Enter);

代替。你得到一个特别的两个 - 它不会阻止你正在测试可访问性,因为许多有缺陷的用户只使用键盘进行导航。

答案 2 :(得分:1)

当selenium挂起时,请更新您的firefox版本,使其更新为selenium