您能否帮助我理解ExpectedConditions.refreshExpectedConditions.stalenessOf

最佳答案

ExpectedCondtion.referesh接受ExpectedCondtion作为参数。

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

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

但是,该元素可能会被操纵多次(例如,通过前端的jQuery调用)。在这种情况下,因为元素变得过时,所以等到元素陈旧并尝试找到它可能仍然会抛出StaleElementReferenceException

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

10-08 15:33