我开始用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。
答案 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));
}