Firefox работает в фоновом режиме в Selenide

обычно вопросы обратные, как заставить Firefox работать в фоновом режиме. Некоторое время назад я написал базовые тесты в Selenide, но сегодня, когда я попытался запустить его (как обычно) на сервере, я получил ошибку

SessionNotCreatedException

Я начал искать результат и заметил, что когда я сейчас запускаю тесты локально с моего компьютера, Firefox не появляется. Я вижу задачи Firefox в диспетчере задач, у меня есть ошибка с сделанным скриншотом, но браузер не открывается.

Я заметил, что есть много вопросов о том, как запускать тесты с безголовым вариантом, но мне нужно что-то противоположное, это может быть проблема с SessionNotCreatedException, сервер не видит браузер.

Насколько я знаю, Selenide использует новейший драйвер gecko (он обновляется). Я попытался установить некоторые параметры в начале:

    FirefoxOptions options = new FirefoxOptions();
    options.setCapability("marionette", false);
    options.setCapability("headless", false);

а также обновил Selenide до 5.0.0, но он все равно не работает

РЕДАКТИРОВАТЬ: я не могу использовать другие браузеры


person Michal    schedule 16.10.2018    source источник
comment
Вы не думали попробовать Xvfb?   -  person Moshe Slavin    schedule 16.10.2018


Ответы (1)


Для запуска тестов на сервере, как правило, сервер представляет собой систему X Window, поэтому способ сделать это — запустить виртуальный дисплей.

Лучше всего для этого использовать Xvfb! вы можете прочитать об этом здесь.

from xvfbwrapper import Xvfb

with Xvfb() as xvfb:
    # launch virtual display here.
    # start your webdrivr in the virtual display

Или вы можете использовать PyVirtualDisplay ссылку здесь.

from pyvirtualdisplay import Display
from selenium import webdriver

display = Display(visible=0, size=(800, 600))
display.start()

# now Firefox will run in a virtual display. 
# you will not see the browser.
browser = webdriver.Firefox()
browser.get('http://www.google.com')
print browser.title
browser.quit()

display.stop()

Примечание

Убедитесь, что ваш сервер является системой X Window!

Как вы можете видеть здесь, это не работает в Windows.

Надеюсь, это поможет вам!

person Moshe Slavin    schedule 16.10.2018
comment
Спасибо, проверю :) - person Michal; 19.10.2018