gpt4 book ai didi

java - 使用 PageFactory 时处理 StaleElementReferenceException

转载 作者:行者123 更新时间:2023-11-30 10:10:13 24 4
gpt4 key购买 nike

<分区>

在使用 Pagefactory 时,我直接声明 WebElement 如下。

@AndroidFindBy(accessibility = "androidLocator")
@iOSFindBy(accessibility = "iosLocator")
private MobileElement element;

但是,有没有办法处理 StaleElementReference 异常,因为我在这里没有使用任何 By 对象。我能想到的所有解决方案都要求我使用定位器作为 By 的对象。

我想在父类中为所有处理 StaleElementReferenceException 的页面类编写一个通用方法。但问题是我只能将引用作为 WebElement 而不是作为 By 对象传递,这违背了重新初始化 WebElement 的目的。

我可以找到以下解决方案:

FluentWait<MobileDriver<MobileElement>> wait = new FluentWait<MobileDriver<MobileElement>>(driver)
.withTimeout(20, TimeUnit.SECONDS).pollingEvery(500, TimeUnit.MILLISECONDS)
.ignoring(NoSuchElementException.class).ignoring(StaleElementReferenceException.class);
wait.until(new Function<WebDriver, MobileElement>() {
@Override
public MobileElement apply(WebDriver driver) {
element.get
MobileElement element = driver.findElement(by);
return element;
}
});

但是同样的问题也出现在这里。我需要将引用作为 By 对象传递,而在 PageFactory 中我将引用作为 WebElemrnt

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com