0

我正在尝试使用页面对象模型,但我不确定如何正确初始化元素。

请看我的测试类的一个例子:

public class TestSuiteSubscriber extends TestInitializer {
Menu menuPage = new Menu(driver);
SubscribersSearchForm searchForm = new SubscribersSearchForm(driver);


@Test     (priority = 1)
public void findByOldNumber(){
    menuPage = PageFactory.initElements(driver, Menu.class);
    menuPage.openSubscribers();
    searchForm = PageFactory.initElements(driver, SubscribersSearchForm.class);
    searchForm.subscriberNumber.sendKeys("100001");

}

如果我在页面类的构造函数中导致 .initElements,我会得到 NullPointerException。据我了解,这是因为它们在页面加载之前已被初始化。是否有适当的方法来避免直接在测试方法中导致 .initElements 方法使测试更具可读性?

4

1 回答 1

0

使用PageObject实例化元素的一个非常常见的做法是使用BaseClass并在整个其他页面类中继承它。所以initElements每次实例化PageObject时都会实例化。我有GitHub ,在那里我用TestNG实现了这个概念。看看会不会对你有帮助。

在你的情况下TestInitializer应该有initElements我相信。此行应驻留在TestInitializer构造函数中

PageFactory.initElements(driver, this);
于 2015-04-14T13:05:19.943 回答