Java NullPointerException使用页面工厂
我刚开始使用PageFactory,但我似乎可以找出是什么导致代码中出现空点异常。这很可能是我如何给司机打电话的问题,但不知道如何解决 在这里管理我的Web驱动程序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
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;
}