我正在编写一个Java代码,它将在Chrome或Firefox中运行一个简单的自动化场景 - 取决于用户的输入。它开始运行(打开浏览器),但然后抛出java.lang.NullPointerException。我以为然后我分配的驱动程序变量的空值将被覆盖,但它不是。这怎么解决?谢谢!我的Java代码抛出java.lang.NullPointerException
package com.selenium;
import java.util.Scanner;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class Main {
public static void main(String[] args) throws InterruptedException {
// environment variable
System.setProperty("webdriver.chrome.driver", "C:\\Automation\\libs\\Drivers\\chromedriver.exe");
//WebDriver chromeDriver = new ChromeDriver();
System.setProperty("webdriver.gecko.driver", "C:\\Automation\\libs\\Drivers\\geckodriver.exe");
WebDriver driver = null;
Scanner scanner = new Scanner(System.in);
int option = scanner.nextInt();
System.out.println("Please enter 1 for Chrome or 2 for Firefox " + option);
if (option == 1)
{
WebDriver driver1= new FirefoxDriver();
}
else if
(option == 2)
{
WebDriver driver2 = new ChromeDriver();
}
else
System.out.println("Please enter a correct number " + option);
String baseURL = "https://login.salesforce.com/?locale=eu";
driver.get(baseURL);
WebElement userName = driver.findElement(By.id("username"));
userName.sendKeys("Yan");
WebElement password = driver.findElement(By.id("password"));
password.sendKeys("123456");
WebElement rememberCheckbox = driver.findElement(By.id("rememberUn"));
rememberCheckbox.click();
WebElement bLogin = driver.findElement(By.id("Login"));
bLogin.click();
}
}
可以显示堆栈跟踪 – sForSujit
False:WebDriver driver1 = new FirefoxDriver();右:driver = newFireFoxDriver(), – tomas
你没有将变量'driver'设置为'null'。你如何期待它会被“覆盖”?请注意,您正在创建新的变量'driver1'和'driver2',但这些当然对变量'driver'没有任何影响。 – Jesper