Запуск remotewebdriver для selenide в обертке Docker+jbehave

Всем привет!

Окружение, в котором должны запускаться тесты развертывается с помощью докера, а значит напрямую запустить браузер не получиться( т.к. тесты запускаются на чистой CentOS ноде) -> веб-драйвер должен запускаться по remoteUrl.

Какой лучший способ задать RemoteDriver в Selenide?
Единственное, что нашел это через WebDriverRunner.setWebDriver(myWebDriver). Но как говорит мануал, в данном случае нам самим надо заботиться о закрытии драйвера ( хотя не совсем понятно почему, если мы передаем инстанс вебдрайвера) что не совсем хотелось бы делать. Хочется воспользоваться всеми преимуществами Selenide :slight_smile:

P.S. на всякий случай, тесты запускаются через jbehave-maven-plugin, goal: run-stories-as-embeddables

А в чём проблема? Просто нужно в тирдаун добавить driver.close() и всё

Конечно можно, но хочется использовать все возможности Selenide: раз уж фреймворк берет на себя управление веб драйвером, то пусть делает это до конца.
А так по логике можно воспользоваться методом getDriver() и все, вообще не будет никаких проблем с Selenide, используй чистый веб драйвер

А не поможет ли настройка -Dremote=<адрес грида>? Как описано тут - http://selenide.org/javadoc/2.10/com/codeborne/selenide/Configuration.html#remote

1 лайк

Привет!
Как сказал @iljapavlovs, самое простое - добавить опцию -Dremote=<адрес грида>.

Если почему-то хочется зафигачить больше разных настроек, можно ещё создать класс-фабрику для вебдрайвера, то есть реализовать класс WebdriverProvider. В нём нужно реализовать один-единственный метод WebDriver createDriver(DesiredCapabilities desiredCapabilities);

Тогда все возможности Selenide будут использованы по максимуму.

1 лайк

Спасибо за советы, вариант с фабрикой нравиться больше :slight_smile: