【发布时间】:2018-12-09 12:06:36
【问题描述】:
PageOne 和PageTwo 都需要使用MasterPage 方法(例如单击确定)。我正在尝试在MasterPage 的构造函数中初始化两个页面。
IntelliJ 告诉我要么将 super(driver) 添加到 Page1/Page2 构造函数,要么将无参数构造函数添加到 master。在这两种情况下,测试都无法运行。使用 super(driver) 构造函数时,页面无法初始化,并且在无 arg 构造函数中,clickOk() 方法在从 Page1/Page2 方法调用时失败。
母版页:
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% 确定解决此问题的最佳方法,因此非常感谢任何指导。
【问题讨论】:
标签: java selenium selenium-webdriver