Testing 在何处使用FindBy注释导致initElements方法

Testing 在何处使用FindBy注释导致initElements方法,testing,webdriver,pageobjects,findby,Testing,Webdriver,Pageobjects,Findby,我尝试使用页面对象模型,但不确定如何正确初始化元素 请参见我的测试类示例: public class TestSuiteSubscriber extends TestInitializer { Menu menuPage = new Menu(driver); SubscribersSearchForm searchForm = new SubscribersSearchForm(driver); @Test (priority = 1) public void findByOldN

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

请参见我的测试类示例:

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方法来提高测试的可读性

使用PageObject实例化元素的一种常见做法是使用基类并在其他页面类中继承它。因此,
initElements
将在每次实例化PageObject时被实例化。我已经用TestNG实现了这个概念。看看这是否对你有帮助

在您的情况下,
TestInitializer
应该具有
initElements
我相信。此行应位于
TestInitializer
constructor中

PageFactory.initElements(driver, this);

不幸的是,它没有帮助:如果我将初始化方法放入类的构造函数中,就会得到空指针错误。如果它正好在影响元素之前(在屏幕截图上有评论),那么就可以了。@BohdanN是TestBase吗?对不起,如果不知道全部流程,真的很难理解