3

你能帮我理解ExpectedConditions.refreshand吗ExpectedConditions.stalenessOf

4

1 回答 1

4

ExpectedCondtion.referesh接受ExpectedCondtion作为参数。

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

ExpectedCondition.stalenessOf等到元素被重绘。如果发生 DOM 操作,这可能有助于等待。然后,您可以再次找到您的元素并执行操作(或使用 PageFactory 创建的元素而不是重新查找它)。

但是,元素可能会被多次操作(例如通过前端的 jQuery 调用)。在这种情况下,等到元素过时并试图找到它,StaleElementReferenceException无论如何都可能抛出,因为元素又过时了。

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

于 2019-04-11T11:20:36.117 回答