[英]Null pointer exception - driver null
我开始在 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。
您已经定义了WebDriver driver;
在全局级别,然后您再次在driverSetup
方法中定义和实例化另一个WebDriver driver
,因此全局驱动程序从未被实例化。
您需要在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
重用相同的实例。 因此, @Before
像您一样在@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));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.