AppiumFieldDecorator 方法在使用最新的宁静版本时出错

AppiumFieldDecorator method is giving error with latest serenity version

我是 Serenity Appium 的新手。我正在尝试使用页面对象机制实现 Serenity-Cucumber-Appium。为了实现页面对象,我遇到了下面的方法,需要在基础页面对象中包含 class.

public class MobilePageObject extends PageObject {
    public MobilePageObject(final WebDriver driver) {
        super(driver, new Predicate<PageObject>() {
            @Override
            public boolean apply(PageObject page) {
                PageFactory
                        .initElements(new AppiumFieldDecorator(((WebDriverFacade) page.getDriver()).getProxiedDriver(),
                                page.getImplicitWaitTimeout().in(TimeUnit.SECONDS), TimeUnit.SECONDS), page);
                return true;
            }
        });
    }
}

当我使用以下版本的 Serenity 和 Cucumber 时,这工作正常。

<serenity.version>1.7.4</serenity.version>
        <serenity.cucumber.version>1.6.3</serenity.cucumber.version>
        <serenity.maven.version>1.7.4</serenity.maven.version>

但是,如果我使用以下版本:

<serenity.version>1.9.20</serenity.version>
        <serenity.cucumber.version>1.9.8</serenity.cucumber.version>
        <serenity.maven.version>1.9.20</serenity.maven.version>

然后它在 in 方法处给我编译时错误,如下所示:

Cannot resolve method 'in(java.util.concurrent.TimeUnit)

你能帮帮我吗,我该如何克服这个问题并有效地为 Appium Serenity 使用页面对象机制。

幸运的是我能够解决这个问题。使用最新的 Serenity 版本需要修改页面对象 class 如下:

public class MobilePageObject extends PageObject {

    public MobilePageObject(final WebDriver driver) {
        super(driver, new Predicate<PageObject>() {
            @Override
            public boolean apply(PageObject page) {
                PageFactory.initElements(new AppiumFieldDecorator(((WebDriverFacade) page.getDriver()).getProxiedDriver()), page);

                return true;
            }
        });
    }
}

还要获得正确的 Serenity 报告,请使用命令 mvn verify 命令执行测试。

感谢支持!