我正在努力减少我的脚本中的冗长,遵循不要重复自己(DRY)编码练习。我偶然发现了一个挑战。我已经使用sefactory和黄瓜实现了基本测试。我将页面对象放在一个单独的BasePage
类中,并在另一个Test
类中初始化了pagefactory。初始化发生在每个方法中,测试按预期运行。
public class Test {
private static WebDriver driver;
public void navigateToUrl(String url) {
//Launch browser
}
public void firstLogin(String username, String Password) {
BasePage basePage = PageFactory.initElements(driver, BasePage.class); //Initialisation
basePage.usernameField.click();
basePage.passwordField.sendKeys("pwd");
}
public void secondLogin() {
BasePage basePage = PageFactory.initElements(driver, BasePage.class); //Initialisation
basePage.myIdField.click();
basePage.myPasswordField.click();
}
我正在尝试增强脚本。我想初始化pagefactory一次,也许是在类级别,而不是在每个方法中初始化,所以,我从所有方法中取消了初始化并在类级别声明了一次:
public class Test {
private static WebDriver driver;
BasePage basePage = PageFactory.initElements(driver, BasePage.class); //Initialisation
我得到了一个nullpointerException。
我也试过这个,把初始化放在一个设置方法中:
public class Test {
private static WebDriver driver;
private static BasePage basePage;
@BeforeMethod
public void setUp() {
basePage = PageFactory.initElements(driver, BasePage.class);
}
仍然,它导致了Nullpointer
我的BasePage
标题如下所示:
public class BasePage {
private final WebDriver driver;
public BasePage(WebDriver driver) {
this.driver = driver;
}
我不仅多次初始化,而且还在basePage
和firstLogin
方法的每一行中使用secondLogin
变量。我不知道是否有方法,但如果有人可以建议或提供意见,那将会有所帮助。感谢。