AppiumFieldDecorator方法使用最新的宁静版本给出错误

时间:2018-07-12 09:29:35

标签: java appium serenity-bdd cucumber-serenity

我是Serenity Appium的新手。我正在尝试通过页面对象机制来实现Serenity-Cucumber-Appium。为了实现页面对象,我在下面遇到的以下方法需要在基本的Page对象类中提供。

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 and 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。

1 个答案:

答案 0 :(得分:0)

幸运的是,我能够解决此问题。使用最新的Serenity版本需要修改页面对象类,如下所示:

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执行测试。

感谢支持!