我正在編寫一個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