Java Selenium,单击元素,挂起

Java Selenium,单击元素,挂起,java,selenium,webdriver,Java,Selenium,Webdriver,这是关于java中的SeleniumWebDriver。若点击一个元素,通常会很快,但有时当服务器忙时,它会说正在连接。。。在浏览器顶部并挂起。通常用于处理等待的代码是:driver.manage().timeouts().implicitlyWait(4,TimeUnit.SECONDS) 但在这种情况下,当服务器挂起click()时,这不会在时间限制后引发异常,因为webdriver在click连接到下一个url之前不会开始计数。以前有人处理过这个问题吗?如何处理 有没有办法按时完成clic

这是关于java中的SeleniumWebDriver。若点击一个元素,通常会很快,但有时当服务器忙时,它会说正在连接。。。在浏览器顶部并挂起。通常用于处理等待的代码是:
driver.manage().timeouts().implicitlyWait(4,TimeUnit.SECONDS)
但在这种情况下,当服务器挂起click()时,这不会在时间限制后引发异常,因为webdriver在click连接到下一个url之前不会开始计数。以前有人处理过这个问题吗?如何处理


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

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

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


试试2.21.0中的一种新方法,它应该能准确地处理这个问题。

Selenium文档中说明了Click()块。如果出于任何原因,Selenium认为页面未完全加载,那么单击将挂起测试

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

element.SendKeys(key.Enter)


相反。你会得到一个二对一的特殊功能-它不会阻塞,而且你正在测试可访问性,因为许多受损用户只使用键盘导航。

当selenium挂起时,更新你的firefox版本,使其与selenium一样更新。

这在firefoxdriver上有效,但在chrome驱动程序上无效。大多数网站都能正常工作,但有些网站会花费10秒来抛出异常,即使超时时间是2秒,这仍然比等待2分钟要好。我猜。对于Chrome驱动程序(也包括IEdriver),我们只需要再等一会儿,这是一种全新的方法,它没有比FF更进一步。您知道,Selenium 2仍处于巨大的开发中。这使它始终工作:FirefoxProfile fp=new FirefoxProfile();fp.setPreference(“webdriver.load.strategy”,“不稳定”);驱动程序=新的Firefox驱动程序(fp);driver.manage().timeout().pageLoadTimeout(4,TimeUnit.SECONDS);我遇到了这个问题,我使用Selenium 2.39和Firefox 26尝试了你的理论,但它没有解决问题,Chrome 31也没有。或者使用了4件事情中的1件。流畅的等待、页面加载超时、隐式等待或可运行/未来(如果在Scala中)。这取决于具体情况。