无法单击从工厂方法传递的元素

时间:2017-04-10 17:09:39

标签: java selenium testing appium pageobjects

您好我想点击一个使用PageFactory定义位置的元素。但它显示的是NullPointerException。

定位器类:

@FindBy(xpath = "//*[@content-desc = 'Navigate up']")
public By backButton;

PageObject类:

public AskPage()
{
   PageFactory.initElements(driver, AskLocator.class);
}

public void backButtonClick()
{
   if(backButtondisplayed())
      commonactions.clickElement(driver, askLocator.backButton);
}

我做错了吗?

注意:我没有添加课程。我刚刚在页面工厂类中为backbutton添加了click方法和定位器。我已经尝试将返回类型更改为WebElemment,它工作正常。现在我想知道我可以从工厂类发送“By”对象吗?

1 个答案:

答案 0 :(得分:1)

在您的代码中:

您正在初始化'this'类,这意味着您已初步询问AskPage.class。

PageFactory.initElements(driver, this);

但是没有必要初始化'AskPage',因为您没有找到任何网页元素。

所以解决方案是:

PageFactory.initElements(driver, askLocator.class:);

现在它将为你带来魔力。

在askLocator.class中将web元素设为静态,或者创建对象并访问web元素。