Selenium не работает корректно на сервере

У меня есть скрипт с Selenium, который корректно работал как на ПК, так и на сервере. Несколько дней назад он остановился на сервере, и до сих пор я не понял, что не так. Я установил как Firefox (41.0.2), так и Selenium (2.53.5) одинаково для ПК и локально.

Запустив:

from selenium import webdriver

browser = webdriver.Firefox()

В текущей версии я сталкиваюсь с этой ошибкой:

selenium.common.exceptions.WebDriverException: Message: The browser appears to have exited before we could connect. If you specified a log_file in the FirefoxBinary constructor, check it for details.

Я должен упомянуть, что я запускаю свой код с настройкой DISPLAY:=1;

Я решил обновить селен до 3.0.2 и столкнулся с:

IOError: [Errno 13] Permission denied: 'geckodriver.log'

По рекомендации других людей, столкнувшихся с этой проблемой, я скачал geckidriver и поместил его в /usr/local/bin. Однако я все еще не могу запустить свой код. Странно то, что код работает без проблем на ПК!

Любые советы или предложения?

Это вывод geckodriver.log:

(firefox:94561): GConf-WARNING **: Client failed to connect to the D-BUS  daemon:
/usr/bin/dbus-launch terminated abnormally without any error message
1484733755568   geckodriver     INFO    Listening on 127.0.0.1:35823
1484733756567   mozprofile::profile     INFO    Using profile path     /tmp/rust_mozprofile.UiIxs53qoUs1
1484733756568   geckodriver::marionette INFO    Starting browser /usr/bin/firefox
1484733756573   geckodriver::marionette INFO    Connecting to Marionette on localhost:44907

(process:95171): GLib-CRITICAL **: g_slice_set_config: assertion 'sys_page_size == 0' failed

Xlib: расширение «RANDR» отсутствует на дисплее «:1».

(firefox:95171): GConf-WARNING **: Client failed to connect to the D-BUS daemon:
/usr/bin/dbus-launch terminated abnormally without any error message

(firefox:95171): GConf-WARNING **: Client failed to connect to the D-BUS daemon:
/usr/bin/dbus-launch terminated abnormally without any error message

(firefox:95171): GConf-WARNING **: Client failed to connect to the D-BUS daemon:
/usr/bin/dbus-launch terminated abnormally without any error message

  (firefox:95171): GConf-WARNING **: Client failed to connect to the  D-BUS daemon:
 /usr/bin/dbus-launch terminated abnormally without any error message

Спасибо


person Moohebat    schedule 18.01.2017    source источник
comment
Это мой geckodriver.log:   -  person Moohebat    schedule 18.01.2017


Ответы (2)


Сначала вам нужно установить свойство следующим образом

System.setProperty("webdriver.firefox.marionette", getRootDir()+ "/src/main/java/configuration/geckodriver");

где getRootDir() — абсолютный путь

затем создайте драйвер

driver = new FirefoxDriver();
person Monis Majeed    schedule 18.01.2017

Проблема решена. Я запускал селен без головы, и даже я установил DISPLAY =: 1, он не работал правильно. Позже я изменил его на

export DISPLAY=:99

и он снова начал работать. Меня заподозрили, что у меня был какой-то неподвешенный процесс, из-за которого они заблокировали мой ДИСПЛЕЙ. С проверкой моего процесса я обнаружил много ожидающих процессов Firefox. После убить их всех. Мой код работает без проблем на Selenium 2.53.5 и Firefox 45.

Итак, я рекомендую, если ваш код работал правильно раньше, и вдруг ваш селен перестал работать, проверьте свой ДИСПЛЕЙ:

export DISPLAY=:1
firefox

и если эта ошибка возникает:

Maximum number of clients reachedError: cannot open display: :1 selenium

и в то же время он работает для:

export DISPLAY=:99
firefox

Вы должны проверить приостановленные процессы, которые используют ваш ДИСПЛЕЙ 1.

Я надеюсь, что это может помочь.

person Moohebat    schedule 19.01.2017