ExpectedConditions中的staleElementReferenceException - > elementToBeClickable

时间:2014-01-06 10:29:31

标签: selenium selenium-webdriver

只是想知道,

中是否有StaleElementReferenceException的范围

WebDriver ExpectedConditions-->elementToBeClickable(WebElement element)

检查函数的源代码,StaleElementReferenceException在catch中并返回null。 但方法ExpectedConditions.elementToBeClickable中有一行代码。这是在随机时间抛出此异常(目前没有任何具体的测试显示)

public ExpectedCondition<WebElement> visibilityOfElement =
      ExpectedConditions.visibilityOf(element);

如果我们检查上面的代码,则无法捕获StaleElementException

有人可以帮助理解上述方法中是否有staleElementException的可能性?如果是 - 这是已知的问题吗?是否有任何可以防止随机失败的工作?

由于 Kapil Aggarwal

1 个答案:

答案 0 :(得分:0)

将调用包装到WebDriverWait中的ExpectedCondition中,该调用使用StaleElementException的FluentWait“.ignoring”子句。然后,您可以将预期条件循环有限次数,直到放弃TimeoutException。


更新:自从我第一次回答这个问题以来,我学到了很多东西。作为TDD开发人员,现在我知道单元测试使用try-catch块中包含的预期条件的方法很困难,并且不建议编写类似这样的代码。例如,尝试使用Mockito使用FluentWait对方法中的.ignoring子句进行单元测试。这根本不容易。创建一个临时更改隐式等待的方法,然后执行driver.findElement并检查可点击性,然后将隐式等待恢复为默认值“0”,这对于创建单元测试要容易得多。再多2美分。

我可能会写一个测试项目,在Github上显示这些东西的例子(在2015年的某个时候)。