gpt4 book ai didi

java - 扩展 PageFactory 注释以支持 wait4element(By)?

转载 作者:行者123 更新时间:2023-12-02 08:42:00 24 4
gpt4 key购买 nike

有没有办法通过作为另一个注释实现的动态等待来扩展 Selenium 页面模型。 ..

我已经实现了 wait4element() ,我只想将其添加为另一个注释,类似于 @FindBy 。

我该怎么做?

最佳答案

Metalloid Expected Conditions 库包含类似的解决方案。

您可以使用 @ExpectedCondition 注释元素,指定超时和条件,如下所示:

@ExpectedCondition(timeout = 10, condition = Visibility.class)
@FindBy(id = "login-button")
private WebElement loginButton;

在构造函数中,您必须调用负责评估元素的方法:

public PageObject() {
PageFactory.initElements(driver, this);
ConditionEvaluator.evaluate(driver, this);
}

ConditionEvaluator 收集所有用 @ExpectedCondition 注释的元素,创建 WebDriverWait 的内部实例并评估 @ExpectedCondition< 中提供的条件。它立即执行。 没有延迟实例化

Metalloid 包含内置的 Visibility.class ,如下所示:

public class Visibility extends Condition {

public Visibility(WebDriver driver, WebElement element) {
super(driver, element);
}

@Override
public ExpectedCondition<?> getExpectedCondition() {
return ExpectedConditions.visibilityOf(element);
}
}

构造函数是使用Java Reflection API调用的,您不必担心它。

方法getExpectedCondition告诉Metalloid如何评估条件。

如果您想创建自己的条件,只需扩展 Condition 类,就像 Visibility.class 那样。

该库是 Metalloid 的一部分:https://github.com/Rafal-Laskowski/Metalloid-Core但就像我所描述的那样,也可以单独使用。维基:https://github.com/Rafal-Laskowski/Metalloid-Expected-Conditions/wiki

关于java - 扩展 PageFactory 注释以支持 wait4element(By)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61324405/

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