【问题标题】:Java/Selenium - java.lang.NullPointerExceptionJava/Selenium - java.lang.NullPointerException
【发布时间】:2018-07-05 07:03:33
【问题描述】:

当我执行测试时,我有这个“java.lang.NullPointerException”。 我该如何解决这个问题?已经检查了其他主题,但仍然有一些麻烦。 很高兴能解决这个问题。

测试(登录页面点击):

public class MainPage {
private WebDriver driver;

static WebDriver wait;

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

@FindBy (xpath = "//a[text()='Sign in']" )
private WebElement signInButton;

public LoginPage clickSignIn() {
    signInButton.click();
    return new LoginPage(driver);
}

主要:

public class MainPageTest {
private WebDriver driver;
private MainPage mainPage;


@Before
public void setUp() {
    driver = new ChromeDriver();
    driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
    driver.manage().window().maximize();
    driver.get("https://github.com");
    mainPage = new MainPage(driver);

}

@Test
public void signInTest(){
    LoginPage loginPage = mainPage.clickSignIn();
    String heading = loginPage.getHeadingText();
    Assert.assertEquals("Sign in to GitHub", heading);
}

@After
public void tearDown(){
    driver.quit();
}

LoginPage 类:

public class LoginPage {
WebDriver driver;

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

private By loginField = By.xpath(".//*[@id='login_field']");
private By passwordField = By.xpath(".//*[@id='password']");
private By signInButton = By.xpath("//input[@type='submit']");
private By heading = By.xpath("//div[contains(@class, 'auth-form-   header')]/h1");
private By error = By.xpath(".//*[@id='js-flash-container']//div[@class='container']");
private By createAccLink = By.xpath("//a[text()='Create an account']");

【问题讨论】:

  • 请提供堆栈跟踪
  • 调试一下代码看看哪个是抛出NPE
  • 同时提供登录类代码

标签: java selenium junit


【解决方案1】:

您尚未初始化您的页面对象模型类,因此会抛出 NULL 指针异常。因此,signInButton 需要移动到 clickSignIn 按钮内,如下所示

public LoginPage clickSignIn() {
    WebElement signInButton=driver.findElement(By.xpath("//a[text()='Sign in']"));
    signInButton.click();
    return new LoginPage(driver);
}

其他

你需要初始化你的 MainPage 类,如下所示

    public MainPage(WebDriver driver) {
        this.driver = driver;
        PageFactory.initElements(driver, this);
    }

【讨论】:

    【解决方案2】:

    空指针异常即将到来,因为你还没有初始化 Pagefatory 类。

    脚本编写可以参考下面的博客

    http://toolsqa.com/selenium-webdriver/page-object-pattern-model-page-factory/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多