selenium java WebDriver中的空指针异常

时间:2018-04-10 14:21:20

标签: java selenium-webdriver

我的代码:

public class Testlogin {

    WebDriver driver;

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

    WebElement userName = driver.findElement(By.id("username"));
    WebElement Password = driver.findElement(By.id("password"));
    WebElement login = driver.findElement(By.xpath("//button"));

    public void loginpages(String user,String pass) {
        userName.sendKeys(user);
        Password.sendKeys(pass);
        login.click();
    }
}
public class Testclass {

    public static void main(String[] args) {
        WebDriver driver = new FirefoxDriver(); 
        driver.get("https://the-internet.herokuapp.com/login");
        Testlogin test = new Testlogin(driver);
        test.loginpages("tomsmith","SuperSecretPassword!");
    }
}

获取以下错误:

Exception in thread "main" java.lang.NullPointerException
    at Test.Testlogin.<init>(Testlogin.java:18)
    at Test.Testclass.main(Testclass.java:14)

2 个答案:

答案 0 :(得分:1)

必须首先对驱动程序对象进行实例化。例如将它移到constuctor中:

public Testlogin(WebDriver driver)
{
    this.driver=driver;

    WebElement userName = driver.findElement(By.id("username"));
    WebElement Password = driver.findElement(By.id("password"));
    WebElement login = driver.findElement(By.xpath("//button"));

}

答案 1 :(得分:1)

如果驱动程序尚未设置,则testlogin类如下所示,它将指向null,当您尝试运行driver.findElement(By.id("username"));并且驱动程序为null时,这将无法解决此问题,因为Aiden Grossman说这些将在设置驱动程序时初始化

public class Testlogin {

    WebDriver driver;

    public Testlogin(WebDriver driver) {
        this.driver=driver;
        WebElement userName = driver.findElement(By.id("username"));
        WebElement Password = driver.findElement(By.id("password"));
        WebElement login = driver.findElement(By.xpath("//button"));
    }

    public void loginpages(String user,String pass) {
        userName.sendKeys(user);
        Password.sendKeys(pass);
        login.click();
    }
}