Як правильно пов'язати selenide і selenium grid selenide

Намагаюся налаштувати виконання Selenide-тестів в Selenium Grid. Допоможіть розібратися, будь ласка.

Коротенько суть ідеї: мені потрібно виконувати тести в Firefox 24й версії на декількох нодах (ноди на Linux, хост-машина на Windows, якщо має значення). Браузер повинен запускатися відразу в режимі fullscreen.

Відкриття браузера виконую в rules.CommonRule (розширює TestWatcher рулу).

питання №1
Чи правильно роблю, що для управління настройками браузера описую свій драйвер FirefoxCustomDriver через реалізацію WebDriverProvider?

питання №2
Чи правильно розумію, що для застосування цього драйвера досить додати системний параметр через System.setProperty (); ?

питання №3
Чому не виходить перевести браузер у повноекранний режим командою вебдрайвера. windows (). fullscreen (); ?

Зараз доводиться робити так:

Але зараз він розгортається тільки після відкриття першої сторінки. Чи можна якось налаштувати, щоб браузер відразу відкривався в повноекранному режимі? Може бути через налаштування профілю або DesiredCapabilities?

питання №4
На хост-машині піднімаю Selenium Grid хаб командою:

На Linux-нодах піднімаю Selenium Grid Ноди командою:

Ноди успішно реєструються в хабі. Далі вважаю, що треба якось повідомити проекту, де знаходиться хаб. Тому на хост-машині запускаю тести командою:

На що у великій кількості отримую такі повідомлення:

Після них браузер так і не запускається. Де я помилився і як правильно спрямувати тести в Grid?

Для роботи з ґрідом потрібен RemoteWebDriver. а не простий FirefoxDriver.
Та й по-моєму кастомний інстанси драйвера набагато легше сетіть в контекст Selenide через WebDriverRunner.setWebDriver (myWebDriver).

не виходить перевести браузер у повноекранний режим

Чи не дивився вихідні fullscreen (). але раніше досить було викликати maximize ().

Судячи з документації, при WebDriverRunner.setWebDriver (myWebDriver) доведеться брати на себе роботу з відкриттям / закриттям браузера, чого не хотілося б. Здалося зручніше взяти WebDriverProvider і продовжувати використовувати Selenide звичним чином.

Наскільки я знаю, maximize () розгортає вікно браузера за розміром екрану, але не переводить його в повноекранний режим (як якщо натиснути клавішу F11). Про всяк випадок перевірив - так і є, тобто maximize () не підходить. І дивно, що команда fullscreen () поводиться точно так само.

Про RemoteWebDriver - спасибі, замінив. При створенні екземпляра відразу передаю йому параметром URL хаба, але не допомогло - отримав ті ж самі повідомлення. Для проби прибрав параметр -Dremote з виклику mvn. і коли в консолі мавена знову посипалися ці повідомлення, в консолі Ноди раптом посипалися такі помилки (раніше була тиша):

Судячи з документації, при WebDriverRunner.setWebDriver (myWebDriver) доведеться брати на себе роботу з відкриттям / закриттям браузера

Ну в вашому прикладі ви тепер відкриваєте браузер самостійно шляхом виклику

А закривати браузер так само просто, як і сетіть: WebDriverRunner.closeWebDriver ().

При створенні екземпляра відразу передаю йому параметром URL хаба, але не допомогло

Логічно, URL невірний. Потрібно то спочатку було почитати, як правильно конектитися до хабу.

Ну в вашому прикладі ви тепер відкриваєте браузер самостійно шляхом виклику

А закривати браузер так само просто, як і сетіть: WebDriverRunner.closeWebDriver ().

Боюся помилитися, але Selenide ж ще і відстежує, чи можна використовувати вже відкритий браузер для наступного тесту або треба його перевідкрити, чи коректно запустився браузер або треба спробувати відкрити його ще раз і т.п.
Все це залишиться на Selenide або це теж треба буде реалізовувати самостійно?

Перед попереднім відповіддю я і запущено в пісочницю такий URL, подивившись на офіційний приклад

Ну і який же URL в офіційному прикладі?

Як правильно пов'язати selenide і selenium grid selenide

А тепер подивимося на оригінальний:

Давайте пошукаємо десять відмінностей.

Як правильно пов'язати selenide і selenium grid selenide

Все це залишиться на Selenide або це теж треба буде реалізовувати самостійно?

Якщо ви використовуєте кастомний драйвер, передбачається, що ви як мінімум повинні сетіть і закривати його, викликаючи вище зазначені методи. Все інше вже відбувається в контексті selenide. @asolntsev думаю зможе більше деталей надати. Особисто я завжди використовував кастомний Раннер. Тому проблем з викликом сетера в @Before і закриттям в @After ніяких не виникало. А взагалі, ось тут в javadocs описано, як потрібно правильно сетіть кастомний драйвер.

А тепер подивимося на оригінальний:

Давайте пошукаємо десять відмінностей.

Як правильно пов'язати selenide і selenium grid selenide

Про всяк випадок перепробував:

1) вказувати URL відразу і в параметрі -Dremote. і в коді при створенні RemoteWebDriver:

2) вказувати URL в параметрі -Dremote. а в коді створювати RemoteWebDriver без параметра URL

3) не вказувати параметр -Dremote. але в коді створювати RemoteWebDriver з параметром URL

По-моєму, самий простий і очевидний варіант, який потрібно було спробувати в першу чергу:

  1. Самому створити RemoteWebDriver перед запуском тесту.
  2. Там же викликати WebDriverRunner.setWebDriver (yourRemoteDriverInstance).
  3. В кінці тесту викликати WebDriverRunner.closeWebDriver ().

І ніяких -Dremote і танців з бубном.

Таке-то рішення працює, спасибі. Ну нехай поки так і залишиться.
Але як і раніше хвилює момент, що той же саме не завелося через WebDriverProvider. Очікував, що з ним якраз і уникну "танців з бубном", але вийшло навпаки.