ExpectedConditions.refresh和ExpectedConditions.stalenessof有什么区别

时间:2019-04-11 10:57:49

标签: java selenium selenium-webdriver expected-condition

请帮助我了解ExpectedConditions.refreshExpectedConditions.stalenessOf

1 个答案:

答案 0 :(得分:3)

ExpectedCondtion.referesh接受ExpectedCondtion作为参数。

让我们假设您有一个由应用程序操纵并重新绘制的文本字段元素。通常,您将获得StaleElementReferenceException,因为当WebDriver调用findElement方法时,它将REFERENCE保存到该对象。如果重绘该对象,则对该对象的引用不再实际,并且会抛出StaleElementReferenceException

ExpectedCondition.stalenessOf等待,直到重新绘制元素。如果发生DOM操作,这可能会很有帮助。然后,您可以再次找到您的元素并执行操作(或使用由PageFactory创建的元素,而不是对其进行重新定义)。

但是,该元素可能会被操纵很多次(例如,通过前端的jQuery调用)。在这种情况下,由于元素再次陈旧,因此等到元素陈旧并尝试找到它之前,可能仍会抛出StaleElementReferenceException

在这种情况下,您可以使用ExpectedCondition.refresh(<my-expected-condition>)。不管元素是否陈旧,这都将允许您在时间范围内执行操作