Selenium PageFactory:每班一次的initelements?

时间:2017-02-10 14:46:18

标签: java selenium pageobjects

这可能更像是一个java问题而不是selenium,但由于我对Java很新,所以我不知道答案。我正在使用页面对象模型编写selenium测试。我有一个类的页面,另一个类的测试。但是,我尝试每个测试课只执行一次PageFactory.initelements,所以我不必在每个测试中添加该行(在该课程中,无论如何,我想做这样的事情:

import com.company.pages.LoginPage

public class LoginTests {

    LoginPage login = PageFactory.initElements(driver, LoginPage.class );

    @Test
    public void test1() {
        login.method();
    }

    @Test
    public void test2() {
        login.methodTwo();
    }
}

但是我一直在NullPointerException类中定义的对象上获得LoginPage。这告诉我该页面从未初始化。但由于我相对较新的Java,我不知道如何初始化它。谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

无论您声明的变量需要初始化为某个值。

int a; // This is a declaration a = 0; // This is an initialization int b = 0; // This is a declaration and initialization

就pageObejcts而言,将Homepage视为一个类,您可以初始化webelement,如下所示

private static WebElement element = null;

答案 1 :(得分:1)

试试这个:

LoginPage login;

@Before
public void beforeTest() {
    login = PageFactory.initElements(driver, LoginPage.class );
}

根据this

  

使用@Before注释公共void方法会导致该方法   在Test方法之前运行。

这将有助于减少测试的冗长程度。