Java Null指针异常-驱动程序Null

Java Null指针异常-驱动程序Null,java,selenium,Java,Selenium,我开始学习Java中的Selenium,我有一个很大的障碍 import org.junit.After; import org.junit.Before; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.openqa.selenium.Dimension; import org.openqa

我开始学习Java中的Selenium,我有一个很大的障碍

import org.junit.After;
import org.junit.Before;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class FirstTest {
    WebDriver driver;

    @Before
    public void driverSetup() {
        System.setProperty("webdriver.chrome.driver", "src/main/resources/chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.manage().window().setSize(new Dimension(1280, 720));
    }

    @After
    public void driverQuit() {
        driver.quit();
    }

    @Test
    public void getMethod() {
        driver.get("http://google.pl");
    }

}

我不知道如何解决这个问题,因为在“getMethod”中,驱动程序为空。

您已经定义了
WebDriver在全局级别,然后在
driverSetup
方法中再次定义和实例化另一个
WebDriver驱动程序。
您需要在
driverSetup
方法中进行一行更改,它就会工作。
您的
driverSetup
应该如下所示:

@Before
public void driverSetup() {
    System.setProperty("webdriver.chrome.driver", "src/main/resources/chromedriver.exe");
    // Instantiating the global driver here
    driver = new ChromeDriver();
    driver.manage().window().setSize(new Dimension(1280, 720));
}

您已经定义了
WebDriver在全局级别,然后在
driverSetup
方法中再次定义和实例化另一个
WebDriver驱动程序。
您需要在
driverSetup
方法中进行一行更改,它就会工作。
您的
driverSetup
应该如下所示:

@Before
public void driverSetup() {
    System.setProperty("webdriver.chrome.driver", "src/main/resources/chromedriver.exe");
    // Instantiating the global driver here
    driver = new ChromeDriver();
    driver.manage().window().setSize(new Dimension(1280, 720));
}

你很接近。您已经将WebDriver的实例(即
driver
定义为全局实例,如中所示:

WebDriver driver;
您可以在
@Before
@Test
@After
中重用相同的实例。因此,无需像您所做的那样,在
之前的
@中声明任何额外的Instance WebDriver:

WebDriver driver = new ChromeDriver();

解决方案 解决方案是使用相同的全局WebDriver实例,如下所示:

WebDriver driver;

@Before
public void driverSetup() {
    System.setProperty("webdriver.chrome.driver", "src/main/resources/chromedriver.exe");
    driver = new ChromeDriver();
    driver.manage().window().setSize(new Dimension(1280, 720));
}

你很接近。您已经将WebDriver的实例(即
driver
定义为全局实例,如中所示:

WebDriver driver;
您可以在
@Before
@Test
@After
中重用相同的实例。因此,无需像您所做的那样,在
之前的
@中声明任何额外的Instance WebDriver:

WebDriver driver = new ChromeDriver();

解决方案 解决方案是使用相同的全局WebDriver实例,如下所示:

WebDriver driver;

@Before
public void driverSetup() {
    System.setProperty("webdriver.chrome.driver", "src/main/resources/chromedriver.exe");
    driver = new ChromeDriver();
    driver.manage().window().setSize(new Dimension(1280, 720));
}