Я пытаюсь запустить тесты в режиме без головы Chrome, но получаю java.lang.NullPointerException
Chrome версия: версия 72.0.3626.121 (официальная сборка) (64-разрядная версия)
Версия Selenium: 3.8.1
Версия Chromedriver: 2.45.615355
Вот мой BaseTest:
public abstract class BaseTest {
public WebDriver driver;
protected abstract String getUrl();
@Before
public void setUp() {
Log.startLog("Test is Starting...");
System.setProperty("webdriver.chrome.driver", "src//test//resources//chromedriver");
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setHeadless(true);
WebDriver driver = new ChromeDriver(chromeOptions);
driver.manage().timeouts().pageLoadTimeout(20, TimeUnit.SECONDS);
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
driver.get(getUrl());
}
@After
public void tearDown() {
Log.endLog("Test is Ending...");
driver.manage().deleteAllCookies();
driver.close();
}
}
Когда я запускаю тесты, не в режиме без головы, каждый тест работает хорошо, но в режиме без головы, я даже не могу запустить простой тест, чтобы понять, работает ли режим без головы.
Тестовый пример:
@Test
public void test() {
System.out.println(driver.getTitle());
}
Пример URL: https://www.wikipedia.org/
UPDATE:
Я создал новый пример проекта с этим кодом:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
public class test {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "/Users/alexsomov/Desktop/chromedriver2");
//Set Chrome Headless mode as TRUE
ChromeOptions options = new ChromeOptions();
options.setHeadless(true);
//Instantiate Web Driver
WebDriver driver = new ChromeDriver(options);
driver.get("https://www.google.com/");
System.out.println("Page title is - " + driver.getTitle());
driver.close();
}
И, бинго, все работает хорошо ... Нужно выяснить, почему код выше из реального проекта не работает, кажется, что-то не так с классом BaseTest, и когда я запускаю код с отладчиком, я получаю driver == null , может у кого-нибудь есть решение, как мне решить эту проблему: /
ОТВЕТ
Решение было очень простым, просто нужно изменить 1 строку в методе setUp () класса BaseTest.
Вот этот:
WebDriver driver = new ChromeDriver(chromeOptions);
изменить на это:
driver = new ChromeDriver(chromeOptions);
и все будет работать.