Да, вы можете использовать инъекцию зависимостей в огурец и внедрять классы объектов страницы в определение шага, используя зависимость
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-core</artifactId>
<version>${cucumber.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>${cucumber.version}</version>
<scope>test</scope>
</dependency>
Это будет выглядеть так:
public class BaseStep {
private DeviceServiceImpl deviceService;
private DashboardScreen dashboardScreen;
public BaseStep() {
this.deviceService = new DeviceServiceImpl(Hooks.driver);
this.dashboardScreen = new DashboardScreen(Hooks.driver);
}
@Then("^I install application$")
public void iInstallApplication() {
dashboardScreen.scroll();
}
@Given("^I enable all network activity$")
public void iEnableAllNetworkActivity() {
}
}
В этом раз вы нашли все элементы на страницах:
/**
* @author Tomash Gombosh
*/
public class DashboardScreen extends AbstractScreen {
private static final AppElement SIGN_IN_BUTTON = new AppElement(
"Sign in button",
By.id(String.format("%s:%s", ApplicationProperties.ANDROID_APP_PACKAGE, "id/right_link")),
ScrollTo.NO,
true);
private static final AppElement SIGN_UP_BUTTON = new AppElement(
"Sign Up Button",
By.id(String.format("%s:%s", ApplicationProperties.ANDROID_APP_PACKAGE, "id/sign_button")),
ScrollTo.NO,
true);
public DashboardScreen(final AppiumDriver<MobileElement> driver) {
super(driver);
}
@Override
public boolean isDisplayed() {
waitToBeVisible(SIGN_IN_BUTTON);
scrollService.scrollDown();
return allRequiredElementDisplayed();
}
public void tapLogin() {
isDisplayed();
tap(SIGN_IN_BUTTON);
}
public void tapSignIn() {
tap(SIGN_UP_BUTTON);
}
public void scroll() {
scrollService.scrollDown();
}
}
Это было бы полезно для вас? Или нужно больше объяснений?