java子类构造函数初始化_Java(Selenium) - 用于初始化子类的超类构造函数

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%确定解决此问题的最佳方法,因此任何指导都会非常感激 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值