空指针异常-驱动程序为空

时间:2020-03-29 17:58:32

标签: 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.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”中,驱动程序为NULL。

2 个答案:

答案 0 :(得分:0)

您已经在全局级别定义了WebDriver driver;,然后又在WebDriver driver方法中定义并实例化了另一个driverSetup,因此全局驱动程序从未实例化。 > 您需要在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));
}

答案 1 :(得分:0)

你很近。您已经定义了 WebDriver 的实例,即driver作为全局实例,如下所示:

WebDriver driver;

您可以在@Before@Test@After中重用同一实例。因此,您无需像在@Before中那样声明 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));
}
相关问题