只是想知道,
中是否有StaleElementReferenceException
的范围
WebDriver ExpectedConditions-->elementToBeClickable(WebElement element)
检查函数的源代码,StaleElementReferenceException
在catch中并返回null。
但方法ExpectedConditions.elementToBeClickable
中有一行代码。这是在随机时间抛出此异常(目前没有任何具体的测试显示)
public ExpectedCondition<WebElement> visibilityOfElement =
ExpectedConditions.visibilityOf(element);
如果我们检查上面的代码,则无法捕获StaleElementException
有人可以帮助理解上述方法中是否有staleElementException
的可能性?如果是 - 这是已知的问题吗?是否有任何可以防止随机失败的工作?
由于 Kapil Aggarwal
答案 0 :(得分:0)
将调用包装到WebDriverWait中的ExpectedCondition中,该调用使用StaleElementException的FluentWait“.ignoring”子句。然后,您可以将预期条件循环有限次数,直到放弃TimeoutException。
更新:自从我第一次回答这个问题以来,我学到了很多东西。作为TDD开发人员,现在我知道单元测试使用try-catch块中包含的预期条件的方法很困难,并且不建议编写类似这样的代码。例如,尝试使用Mockito使用FluentWait对方法中的.ignoring子句进行单元测试。这根本不容易。创建一个临时更改隐式等待的方法,然后执行driver.findElement并检查可点击性,然后将隐式等待恢复为默认值“0”,这对于创建单元测试要容易得多。再多2美分。
我可能会写一个测试项目,在Github上显示这些东西的例子(在2015年的某个时候)。