Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法单击从工厂方法传递的元素_Java_Selenium_Testing_Appium_Pageobjects - Fatal编程技术网

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

Java 无法单击从工厂方法传递的元素,java,selenium,testing,appium,pageobjects,Java,Selenium,Testing,Appium,Pageobjects,您好,我正在尝试单击使用PageFactory定义位置的元素。但它显示的是NullPointerException 定位器类别: PageObject类: 我做错什么了吗 注意:我没有添加类。我刚刚在page factory类中为backbutton添加了click方法和定位器。我尝试过将返回类型更改为WebElement,效果很好。现在我想知道我可以从工厂类通过对象发送吗 在您的代码中: 您正在初始化“this”类,这意味着您正在初始化AskPage.class PageFactory.ini

您好,我正在尝试单击使用PageFactory定义位置的元素。但它显示的是NullPointerException

定位器类别:

PageObject类:

我做错什么了吗

注意:我没有添加类。我刚刚在page factory类中为backbutton添加了click方法和定位器。我尝试过将返回类型更改为WebElement,效果很好。现在我想知道我可以从工厂类通过对象发送吗

在您的代码中:

您正在初始化“this”类,这意味着您正在初始化AskPage.class

PageFactory.initElementsdriver,此

但是没有必要初始化“AskPage”,因为您没有找到任何web元素

因此,解决方案是:

PageFactory.initElements(driver, askLocator.class:);
现在它会为你变魔术


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

您初始化驱动程序实例了吗?您应该花一些时间阅读PageFactory上的文档。你没有正确地使用它。当我在工厂类中将返回类型更改为WebElement时,@narendrajput可能会重复,然后元素将正确返回,但当我尝试按对象返回时,它将变为null。我希望通过对象获取,因为我编写的所有方法都将通过对象作为输入。可以从工厂类通过对象发送吗?@JeffC这个问题与您提出的问题不同。嘿,谢谢。这是错误之一。我纠正了这个问题,但工厂类中的元素仍然为null。当我将返回类型更改为工厂类中的WebElement时,元素是正确的,但当我尝试按对象返回时,它变为null。我希望通过对象获取,因为我编写的所有方法都将通过对象作为输入。是否可以从工厂类按对象发送?发布一个将`By`作为输入的方法。public static void waitUntilElementIsVisibleWebDriver driver,按元素{WebDriverWait wait=new WebDriverWaitdriver,20;wait.untilExpectedConditions.visibilityOfElementLocatedelement;}例如,上面的方法将By作为输入。当我将WebElement传递给它时,它不起作用。
public AskPage()
{
   PageFactory.initElements(driver, AskLocator.class);
}

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