我尝试使用网页对象模型,但我不确定如何正确初始化元素。
请参阅我的测试类的示例:
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方法,从而使测试更具可读性?
答案 0 :(得分:0)
使用 PageObject 实例化元素的一种常见做法是使用 BaseClass 并在其他页面类中继承该元素。因此,每次实例化 PageObject 时,initElements
都会被实例化。我有GitHub我用 TestNG 实现了这个概念。看看这对你有帮助。
在你的情况下TestInitializer
应该有initElements
我相信。该行应位于TestInitializer
构造函数
PageFactory.initElements(driver, this);