扩展PageFactory注解以支持wait4element(By)?

问题描述 投票:0回答:1

有没有办法扩展Selenium页面模型,将动态等待作为另一个注解来实现。..

我已经实现了wait4element(),我只是想把它添加为另一个注解,类似于@FindBy 。

我该怎么做呢?

java selenium annotations pageobjects page-factory
1个回答
1
投票

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.comRafal-LaskowskiMetalloid-Core。但也可以像我描述的那样,独立使用。维基。https:/github.comRafal-LaskowskiMetalloid-Expected-Conditionswiki。

© www.soinside.com 2019 - 2024. All rights reserved.