我是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。
答案 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
执行测试。
感谢支持!