PageOne 和 PageTwo 都需要使用 MasterPage 方法(例如,单击“确定”) . 我正在尝试在 MasterPage 的构造函数中初始化两个页面 . IntelliJ告诉我要么将super(驱动程序)添加到 Page1 / Page2 构造函数,要么添加一个no arg构造函数来构建 . 在这两种情况下,测试都无法运行 . 使用super(驱动程序)构造函数时,页面无法初始化,并且在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();
}
}
Page1:
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();
}
}
Page2:
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%确定解决此问题的最佳方法,因此任何指导都会非常感激 .