Здравствуйте. Столкнулся с проблемой после обновления версий serenity и webdriver.
Тесты запускаются Jenkins, и есть две сборки - одна для прогона тестов в firefox, другая в chrome. Соответственно использую ключи -Dwebdriver.driver=****.
В самих тестах использую проверку System.getProperty(“webdriver.driver”).equals(“chrome”).
Если тесты запущены в хроме - то есть степ по закрытию рекламы для хрома, если в фаерфоксе - то отдельный степ закрытия рекламы в фаерфоксе.
Заметил, что при запуске любого варианта в дело идёт степ с закрытием рекламы в фаерфоксе.
Решил подебажить локально - перед тестом прописал в @Before System.setProperty(“webdriver.chrome.driver”, “path_to_chrome_driver”) - не пошло. Идея ругается на отсутствие пути до драйвера.
Что может быть не так?
Что-то мне самому не нравится своё же описание. Лучше коротко и ясно:
Не могу запустить тест в хроме локально.
@Before
public void setUp() {
System.setProperty("webdriver.chrome.driver", "F:\\chromedriver.exe");
}
@WithDriver("chrome")
@Test
********
В итоге, после запуска, получаю:
[main] INFO net.serenitybdd.core.Serenity - TEST NUMBER: 1
[main] ERROR net.thucydides.core.webdriver.WebDriverFacade - FAILED TO CREATE NEW WEBDRIVER_DRIVER INSTANCE class org.openqa.selenium.chrome.ChromeDriver: Could not instantiate new WebDriver instance of type class org.openqa.selenium.chrome.ChromeDriver (The path to the chromedriver driver executable must be set by the webdriver.chrome.driver system property; for more information, see https://sites.google.com/a/chromium.org/chromedriver/downloads. The latest version can be downloaded from https://sites.google.com/a/chromium.org/chromedriver/downloads
net.thucydides.core.webdriver.UnsupportedDriverException: Could not instantiate new WebDriver instance of type class org.openqa.selenium.chrome.ChromeDriver (The path to the chromedriver driver executable must be set by the webdriver.chrome.driver system property; for more information, see https://sites.google.com/a/chromium.org/chromedriver/downloads. The latest version can be downloaded from https://sites.google.com/a/chromium.org/chromedriver/downloads
Это надо писать ДО того как вы конструируете обьект драйвера. Где у вас происходит driver = new ChromeDriver() ? Найдите это место и пишите проперти до вызова new ChromeDriver().
P.S. а вообще лучше использовать GitHub - bonigarcia/webdrivermanager: Automated driver management and other helper features for Selenium WebDriver in Java
Serenity сама конструирует объект драйвера, поэтому у меня нет места, где driver = new ChromeDriver().
Вообще для Serenity должно быть достаточно пробрасывать -Dwebdriver.driver (без @WithDriver)
Тогда вам надо смотреть как это сделать легальным путем из документации по серенити
С этим полностью согласен, но этот вариант для запуска через maven. Я же пытаюсь запустить дебаг из intellij idea.
1 При запуски из Ide запускается тот же мавен
2 Для запуска из Ide с определенными параметрами можно использовать, например, профили сборки
3 Ну и в серенити есть конфиг serenity.properties, можно через него попробовать
Совершенно не понял, что именно произошло, но после рестарта винды - всё заработало с использованием прописывания пути до хромдрайвера в @Before и аннотации @WithDriver(“chrome”) перед самим тестом.
Всем спасибо за ответы. Самый ценный, по моему мнению, выделил.
В документации серенити советуют прописывать путь к драйвер в serenity.properties
Например:
webdriver.chrome.driver = drivers/chromedriver_win.exe
тогда не надо это указывать в тестах.