System.setProperty / System.getProperty Selenium 2.53.1 + Serenity

chromedriver
serenity
webdriver
Теги: #<Tag:0x00007f3d3ff64ab8> #<Tag:0x00007f3d3ff63d98> #<Tag:0x00007f3d3ff63b90>

(Николай Анатольевич) #1

Здравствуйте. Столкнулся с проблемой после обновления версий serenity и webdriver.
Тесты запускаются Jenkins, и есть две сборки - одна для прогона тестов в firefox, другая в chrome. Соответственно использую ключи -Dwebdriver.driver=****.
В самих тестах использую проверку System.getProperty("webdriver.driver").equals("chrome").
Если тесты запущены в хроме - то есть степ по закрытию рекламы для хрома, если в фаерфоксе - то отдельный степ закрытия рекламы в фаерфоксе.
Заметил, что при запуске любого варианта в дело идёт степ с закрытием рекламы в фаерфоксе.
Решил подебажить локально - перед тестом прописал в @Before System.setProperty("webdriver.chrome.driver", "path_to_chrome_driver") - не пошло. Идея ругается на отсутствие пути до драйвера.
Что может быть не так?


(Николай Анатольевич) #2

Что-то мне самому не нравится своё же описание. Лучше коротко и ясно:
Не могу запустить тест в хроме локально.

@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

(Yaroslav Pernerovskyy) #3

Это надо писать ДО того как вы конструируете обьект драйвера. Где у вас происходит driver = new ChromeDriver() ? Найдите это место и пишите проперти до вызова new ChromeDriver().

P.S. а вообще лучше использовать https://github.com/bonigarcia/webdrivermanager


(Николай Анатольевич) #4

Serenity сама конструирует объект драйвера, поэтому у меня нет места, где driver = new ChromeDriver().


#5

Вообще для Serenity должно быть достаточно пробрасывать -Dwebdriver.driver (без @WithDriver)


(Yaroslav Pernerovskyy) #6

Тогда вам надо смотреть как это сделать легальным путем из документации по серенити


(Николай Анатольевич) #7

С этим полностью согласен, но этот вариант для запуска через maven. Я же пытаюсь запустить дебаг из intellij idea.


#8

1 При запуски из Ide запускается тот же мавен
2 Для запуска из Ide с определенными параметрами можно использовать, например, профили сборки
3 Ну и в серенити есть конфиг serenity.properties, можно через него попробовать


(Николай Анатольевич) #9

Совершенно не понял, что именно произошло, но после рестарта винды - всё заработало с использованием прописывания пути до хромдрайвера в @Before и аннотации @WithDriver("chrome") перед самим тестом.
Всем спасибо за ответы. Самый ценный, по моему мнению, выделил.


(Tonya Mikhaylenko) #10

В документации серенити советуют прописывать путь к драйвер в serenity.properties
Например:
webdriver.chrome.driver = drivers/chromedriver_win.exe
тогда не надо это указывать в тестах.