请帮助我了解ExpectedConditions.refresh
和ExpectedConditions.stalenessOf
。
答案 0 :(得分:3)
ExpectedCondtion.referesh
接受ExpectedCondtion
作为参数。
让我们假设您有一个由应用程序操纵并重新绘制的文本字段元素。通常,您将获得StaleElementReferenceException
,因为当WebDriver
调用findElement
方法时,它将REFERENCE保存到该对象。如果重绘该对象,则对该对象的引用不再实际,并且会抛出StaleElementReferenceException
。
ExpectedCondition.stalenessOf
等待,直到重新绘制元素。如果发生DOM操作,这可能会很有帮助。然后,您可以再次找到您的元素并执行操作(或使用由PageFactory创建的元素,而不是对其进行重新定义)。
但是,该元素可能会被操纵很多次(例如,通过前端的jQuery调用)。在这种情况下,由于元素再次陈旧,因此等到元素陈旧并尝试找到它之前,可能仍会抛出StaleElementReferenceException
。
在这种情况下,您可以使用ExpectedCondition.refresh(<my-expected-condition>)
。不管元素是否陈旧,这都将允许您在时间范围内执行操作