这可能更像是一个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,我不知道如何初始化它。谢谢你的帮助!
答案 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方法之前运行。
这将有助于减少测试的冗长程度。