PageOne
и PageTwo
оба должны использовать методы MasterPage
(например, нажмите Ok).Я пытаюсь инициализировать обе страницы в конструкторе MasterPage
.IntelliJ говорит мне либо добавить super (драйвер) к конструкторам Page1
/ Page2
, либо добавить конструктор no arg в master.В обоих случаях тесты не могут быть запущены.с помощью конструктора super (driver) страницы не инициализируются, а в конструкторе no arg происходит сбой метода clickOk()
при вызове из метода Page1 / Page2.
MasterPage:
public class MasterPage {
private WebDriver driver;
public Page1 p1;
public Page2 p2;
public MasterPage(WebDriver driver) {
this.driver = driver;
p1 = new Page1(driver);
p2 = new Page2(driver);
PageFactory.initElements(driver, this);
}
@FindBy(id = "OkBtn")
private WebElement okBtn;
public void clickOk() {
okBtn.click();
}
}
Страница 1:
public class Page1 extends MasterPage {
private WebDriver driver;
public Page1(WebDriver driver) {
this.driver = driver;
PageFactory.initElements(driver, this);
}
@FindBy(id="field")
private WebElement elementOne;
public void completePage() {
elementOne.click();
clickOk();
}
}
Страница 2:
public class Page2 extends MasterPage {
private WebDriver driver;
public Page2(WebDriver driver) {
this.driver = driver;
PageFactory.initElements(driver, this);
}
@FindBy (id="field")
private WebElement elementTwo;
public void completePageTwo() {
elementTwo.click();
clickOk();
}
}
Я намерен использовать их какэто:
public class Page1Steps {
MasterPage master;
WebDriver driver;
public void testMethod() {
master = new MasterPage(driver);
master.p1.completePage();
master.p2.completePageTwo();
}
}
Вы можете сказать, что я не на 100% уверен в лучшем подходе к решению этой проблемы, поэтому любые рекомендации будут по достоинству оценены.