получение исключения NullPointerException для встроенного кода. Я определил веб-драйвер глобально, метод браузера вызова работает нормально, что я здесь делаю не так

#selenium #webdriver

Вопрос:

 public class Test{
    static WebDriver driver;
    public static void main(String[] arg) throws IOException, InterruptedException {
        Test2();
    }

    public static void CallBrowserChrome() {
        try {
            System.setProperty("webdriver.chrome.driver", "G:\Chrome\chromedriver.exe");
            WebDriver driver = new ChromeDriver();
            driver.get("https://google.com");
            
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static void Test2() throws IOException, InterruptedException {
        CallBrowserChrome();

        FileInputStream fis = new FileInputStream("G:\Book1.xlsx");
        XSSFWorkbook wb = new XSSFWorkbook(fis);
        XSSFSheet sheet = wb.getSheetAt(0);
        int rows = sheet.getLastRowNum();
        System.out.println(rows);
        for (int i = 1; i <= rows; i  ) {
            String value = sheet.getRow(i).getCell(0).getStringCellValue();
            System.out.println(value);
            **driver.findElement(By.xpath("//*[@id='js-main-container']"))
                    .sendKeys(value);**
        }
        }
}
 

//Ошибка в этой строке выделена(драйвер 2-го класса); Я пытался указать веб-драйвер внутри тела метода, но это также не работает

   [1]: https://i.stack.imgur.com/0GzeA.png
 

Комментарии:

1. удалите объявление из этой строки Драйвер WebDriver = новый ChromeDriver();. Это должен быть драйвер = новый ChromeDriver();

Ответ №1:

Эта строка: WebDriver driver = new ChromeDriver(); объявляет драйвер локальным CallBrowserChrome и игнорирует другое ваше объявление.

Измените свой первый метод на этот:

    public static void CallBrowserChrome() {
        try {
            System.setProperty("webdriver.chrome.driver", "G:\Chrome\chromedriver.exe");
            driver = new ChromeDriver();// update this line
            driver.get("https://google.com");
            //...etc