Java / Selenium WebDriver / Firefox
页面上有一个文本“输入”字段。然后在它下方有一个“提交”按钮。 加载页面时,输入字段和“提交”按钮都已启用。 在输入字段中输入文本后,有没有办法让WebDriver在单击“提交”按钮之前等待“x”秒,而不是立即单击它。
我能看到的选项是Thread.sleep(x),我理解这不是一种有效的方法。 另一个选项是使用没有预期条件的新WebDriverWait(驱动程序,'x')(因为此处没有预期条件,因为“提交”按钮已经可见且可单击)。在这种情况下,这与使用Thread.sleep(x)相同吗? 还有其他选择吗?
答案 0 :(得分:1)
Selenium waits旨在等待特定条件。 Implicit wait
正在等待driver.findElement()
中的DOM存在元素,explicit wait
等待ExpectedCondition
为true
。
但是,只要满足条件,代码就会继续,或者如果条件失败,则会抛出异常。
您可以使用某些操作
使代码在没有线程的情况下“休眠”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()
。