使WebDriver在没有ExpectedCondition的情况下等待

时间:2016-03-09 21:41:53

标签: java selenium firefox selenium-webdriver

Java / Selenium WebDriver / Firefox

  

页面上有一个文本“输入”字段。然后在它下方有一个“提交”按钮。   加载页面时,输入字段和“提交”按钮都已启用。   在输入字段中输入文本后,有没有办法让WebDriver在单击“提交”按钮之前等待“x”秒,而不是立即单击它。

     
    

我能看到的选项是Thread.sleep(x),我理解这不是一种有效的方法。     另一个选项是使用没有预期条件的新WebDriverWait(驱动程序,'x')(因为此处没有预期条件,因为“提交”按钮已经可见且可单击)。在这种情况下,这与使用Thread.sleep(x)相同吗?     还有其他选择吗?

  

1 个答案:

答案 0 :(得分:1)

Selenium waits旨在等待特定条件。 Implicit wait正在等待driver.findElement()中的DOM存在元素,explicit wait等待ExpectedConditiontrue

但是,只要满足条件,代码就会继续,或者如果条件失败,则会抛出异常。

您可以使用某些操作

使代码在没有线程的情况下“休眠”
WebDriverWait tempWait = new WebDriverWait(driver, 10); // define local/temp wait only for the "sleep"
try {
    tempWait.until(ExpectedCondition); // condition you are certain won't be true
}
catch (TimeoutException) {
    continue; // catch the exception and continue the code
}
// continue the code

这将导致代码模拟“休眠”10秒(代码将不会继续,但如果tempWait.until符合,ExpectedCondition将重复检查。

这是肮脏的工作,甚至比Thread.sleep()效率更低。如果目的是等待一段时间,无论网络状况如何,我建议您使用Thread.sleep()