我的代码:
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)
答案 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();
}
}