0

我是 Serenity Appium 的新手。我正在尝试使用页面对象机制来实现 Serenity-Cucumber-Appium。为了实现页面对象,我遇到了下面的方法需要在一个基本的页面对象类中。

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 有效地使用页面对象机制。

4

1 回答 1

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 报告,请使用 commandmvn verify命令执行测试。

谢谢你的支持!

于 2018-07-30T05:43:35.910 回答