[Python] Как исправить Selenium WebDriverException: браузер, кажется, вышел, прежде чем мы могли подключиться?


Answers

Я столкнулся с этим на (безголовом) сервере Ubuntu 14.04 с установленными Jenkins и xvfb. Я установил последний стабильный Firefox (47), который начал сбой сборки, который запускал скрипт python, который использовал драйвер Firefox для селена (версия 2.53).

По-видимому, Firefox 47+ несовместим с драйвером, используемым в Selenium 2.53, и Selenium 3+ будет использовать новый драйвер под названием «Marionette» или «Gecko Driver» (который еще официально не выпущен).

На этой странице объясняется, как правильно использовать новый драйвер на нескольких языках: https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver

В основном:

  1. get / build исполняемый файл из проекта на github: https://github.com/mozilla/geckodriver/releases (и убедитесь, что он настроен как исполняемый, IE chmod a+x /path/to/geckdriver-executable )
  2. переименовать / скопировать двоичный код в "проводы"
  3. убедитесь, что местоположение двоичного файла добавлено в PATH, который использует сборка при выполнении теста селена
  4. обновите тест селена, чтобы использовать новый драйвер

Для Python шаг 4 выглядел примерно так:

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True
firefox_capabilities['binary'] = '/usr/bin/firefox'

driver = webdriver.Firefox(capabilities=firefox_capabilities)
Question

Я установил firefox и Xvfb на свой сервер centos6.4 для использования selenium webdriver.

Но когда я запускаю код, у меня есть ошибка.

from selenium import webdriver
browser = webdriver.Firefox()

ошибка

selenium.common.exceptions.WebDriverException: Message: 
'The browser appears to have exited before we could connect. The output was: None'

Я прочитал некоторые связанные страницы о , и кто-то предложил удалить все файлы в папку tmp, поэтому я сделал это. Но это все еще не работает.

Может кто-нибудь, пожалуйста, помогите мне?

Заранее спасибо!

редактировать

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.4/site-packages/selenium/webdriver/firefox/webdriver.py", line 59, in __init__
    self.binary, timeout),
  File "/usr/local/lib/python3.4/site-packages/selenium/webdriver/firefox/extension_connection.py", line 47, in __init__
    self.binary.launch_browser(self.profile)
  File "/usr/local/lib/python3.4/site-packages/selenium/webdriver/firefox/firefox_binary.py", line 64, in launch_browser
    self._wait_until_connectable()
  File "/usr/local/lib/python3.4/site-packages/selenium/webdriver/firefox/firefox_binary.py", line 103, in _wait_until_connectable
    self._get_firefox_output())
selenium.common.exceptions.WebDriverException: Message: 'The browser appears to have exited     before we could connect. The output was: None' 



Я также столкнулся с той же проблемой, что и я:

  1. Обновление пакета селена

    sudo pip install -U selenium
  2. Вместо того, чтобы возвращаться к более старой версии (например, предложено), я перешел к более новой версии (48.0, я ранее использовал V47.0). (для обновления следуйте инструкциям Тоби Спейта, но вместо того, чтобы выбрать более старую версию, выберите более новую версию)




Откат вашего Firefox до предыдущей рабочей версии. Я предлагаю 2 версии. Отключить службу технического обслуживания Firefox.

Я работал над решением, и Служба технического обслуживания Firefox обновила Firefox до последней сборки в фоновом режиме. Это нарушило мой код, и это дало мне эту ошибку.

Теперь это исправлено!

Всем спасибо!




Вместо того, чтобы понижать рейтинг firefox от 47 до 45 или что-то, я предлагаю обновить до 47.0.1 или выше, поскольку они, похоже, исправляют проблему.

Но если ваша ОС не имеет новых пакетов в репо (например, Ubuntu 14.04 во время этого ответа), вы можете использовать debs из проекта ubuntuzilla:

wget sourceforge.net/projects/ubuntuzilla/files/mozilla/apt/pool/main/f/firefox-mozilla-build/firefox-mozilla-build_47.0.1-0ubuntu1_amd64.deb

sudo dpkg -i firefox-mozilla-build_47.0.1-0ubuntu1_amd64.deb

Для x86 используйте постфикс _i386.deb . Эта проданная проблема для меня




Проверьте переменную среды DISPLAY . Запустите echo $DISPLAY в командной строке.

Если ничего не напечатано, вы запускаете FireFox без какого-либо DISPLAY. Вы должны назначить его! Запустите export DISPLAY=:1 в командной строке перед запуском вашего скрипта python.

Проверьте эту тему для получения дополнительной информации: http://hashcat.net/forum/thread-1973.html




Его можно решить, изменив разрешение файла выходного файла (или связанных файлов с программой).
Я использовал веб-редактор Firefox.

Пытаться:

chmod -R 777 output_file

Это разрешило мне ту же самую проблему.