Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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 NullPointerException使用页面工厂_Java_Selenium_Page Factory - Fatal编程技术网

Java NullPointerException使用页面工厂

Java NullPointerException使用页面工厂,java,selenium,page-factory,Java,Selenium,Page Factory,我刚开始使用PageFactory,但我似乎可以找出是什么导致代码中出现空点异常。这很可能是我如何给司机打电话的问题,但不知道如何解决 在这里管理我的Web驱动程序 public class Browser { public static WebDriver driver; public static void setup() { ChromeOptions handlingSSL = new ChromeOptions(); han

我刚开始使用PageFactory,但我似乎可以找出是什么导致代码中出现空点异常。这很可能是我如何给司机打电话的问题,但不知道如何解决

在这里管理我的Web驱动程序

    public class Browser {

    public static WebDriver driver;


    public static void setup() {
        ChromeOptions handlingSSL = new ChromeOptions();
        handlingSSL.setAcceptInsecureCerts(true);

        WebDriverManager.chromedriver().setup();
        driver = new ChromeDriver(handlingSSL);
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    }

    public static void quit() {
        driver.quit();
    }
}
为我的TC做准备

    public class Base {

    @BeforeMethod
    public void setup() {
        Browser.setup();
        Browser.driver.get("https://example.com");
    }


    @AfterMethod
    public void quit() {
        Browser.quit();
    }
}
包含所有元素的page类

    public  class LoginPage {

    @FindBy (id = "username")
    WebElement username;
    @FindBy (id = "password")
    WebElement password;
    @FindBy (xpath = "//button[contains(text(), 'Sign')]")
    WebElement sign;


        public void logIn(String userName, String passWord) {
            username.sendKeys(userName);
            password.sendKeys(passWord);
            sign.click();
        }
    }

我也尝试过在页面调用中添加构造函数方法,但也没有成功

public class LoginPageTest extends Base {

    LoginPage loginPage = PageFactory.initElements(Browser.driver, LoginPage.class);

    @Test
    public void verifyLoginTest(){
        loginPage.logIn("user","pass");
    }
}

您可能需要在LoginPage.java中有一个构造函数,并在该类中为驱动程序定义一个私有对象,如下所示:

private WebDriver driver;

public LoginPage(WebDriver driver) {
     this.driver = driver;
}

在哪一行抛出异常?为了帮助我们了解您的问题,您必须提供堆栈跟踪…到目前为止,我唯一的猜测是您的一个(或全部)Web元素无法定位。对不起,忘了这一点:)这是否回答了您的问题
LoginPage LoginPage@BeforeMethod public void createDriver(){LoginPage=PageFactory.initElements(Browser.driver,LoginPage.class);}
您可以尝试在before方法中初始化它并使用它吗?得到空指针的原因是,loginpage尚未初始化,您正在尝试访问null上的方法。仍然获得NullPointerException:(我希望您已将此行放入测试中,正如其他人所提到的…
loginpage loginpage=PageFactory.initElements(Browser.driver,loginpage.class);
private WebDriver driver;

public LoginPage(WebDriver driver) {
     this.driver = driver;
}