ExpectedConditions.refresh 和 ExpectedConditions.stalenessof 有什么区别
What is difference between ExpectedConditions.refresh and ExpectedConditions.stalenessof
你能帮我理解一下ExpectedConditions.refresh
和ExpectedConditions.stalenessOf
。
ExpectedCondtion.referesh
接受 ExpectedCondtion
作为参数。
假设您有一个文本字段元素,该元素由应用程序操作并重新绘制。通常,您会得到 StaleElementReferenceException
,因为当 WebDriver
调用 findElement
方法时,它将 REFERENCE 保存到对象。如果对象被重绘,则对该对象的引用不再是实际的,并且 StaleElementReferenceException
被抛出。
ExpectedCondition.stalenessOf
等到元素被重绘。如果发生 DOM 操作,这可能有助于等待。然后,您可以重新找到您的元素并执行操作(或者使用 PageFactory 创建的元素而不是重新查找它)。
但是,该元素可能会被多次操作(例如通过前端的 jQuery 调用)。在这种情况下,等到元素过时并尝试找到它,可能会抛出 StaleElementReferenceException
,因为元素再次过时。
在这种情况下,您可以使用 ExpectedCondition.refresh(<my-expected-condition>)
。这将允许您在时间范围内执行操作,而不管元素是否过时
你能帮我理解一下ExpectedConditions.refresh
和ExpectedConditions.stalenessOf
。
ExpectedCondtion.referesh
接受 ExpectedCondtion
作为参数。
假设您有一个文本字段元素,该元素由应用程序操作并重新绘制。通常,您会得到 StaleElementReferenceException
,因为当 WebDriver
调用 findElement
方法时,它将 REFERENCE 保存到对象。如果对象被重绘,则对该对象的引用不再是实际的,并且 StaleElementReferenceException
被抛出。
ExpectedCondition.stalenessOf
等到元素被重绘。如果发生 DOM 操作,这可能有助于等待。然后,您可以重新找到您的元素并执行操作(或者使用 PageFactory 创建的元素而不是重新查找它)。
但是,该元素可能会被多次操作(例如通过前端的 jQuery 调用)。在这种情况下,等到元素过时并尝试找到它,可能会抛出 StaleElementReferenceException
,因为元素再次过时。
在这种情况下,您可以使用 ExpectedCondition.refresh(<my-expected-condition>)
。这将允许您在时间范围内执行操作,而不管元素是否过时