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

Я установил 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' 

Я прочитал некоторые связанные страницы о stackoverflow, и кто-то предложил удалить все файлы в папку 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' 

12 Solutions collect form web for “Как исправить Selenium WebDriverException: браузер, кажется, вышел, прежде чем мы могли подключиться?”

для гуглеров этот ответ не сработал для меня, и я должен был использовать этот ответ вместо этого. Я использую AWS Ubuntu.

В принципе, мне нужно было установить Xvfb, а затем pyvirtualdisplay:

 sudo apt-get install xvfb sudo pip install pyvirtualdisplay 

Как только я это сделал, этот код python работал:

 #!/usr/bin/env python from pyvirtualdisplay import Display from selenium import webdriver display = Display(visible=0, size=(1024, 768)) display.start() browser = webdriver.Firefox() browser.get('http://www.ubuntu.com/') print browser.page_source browser.close() display.stop() 

Спасибо @ That1Guy за первый ответ

Я столкнулся с этим на (безголовом) сервере 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) 

У меня тоже была такая же проблема. Я был на Firefox 47 и Selenium 2.53; Я понизил Firefox до 45. Это сработало.

  1. Сначала удалите Firefox 47:

     sudo apt-get purge firefox 
  2. Проверьте наличие доступных версий:

     apt-cache show firefox | grep Version 

    Он покажет доступные версии firefox, такие как:

    Версия: 47.0 + build3-0ubuntu0.16.04.1
    Версия: 45.0.2 + build1-0ubuntu1

  3. Установите определенную версию

     sudo apt-get install firefox=45.0.2+build1-0ubuntu1 
  4. Затем вам не нужно снова обновляться до новой версии.

     sudo apt-mark hold firefox 
  5. Если вы хотите обновить позже

     sudo apt-mark unhold firefox sudo apt-get upgrade 

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

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

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

Я думаю, что самое простое решение здесь – это просто запустить Python с помощью xvfb-run :

 sudo apt-get install xvfb xvfb-run python <your_file_or_args> 

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

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

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

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

Эта ошибка вызвана тем, что Xvfb не работает. Перезагрузите xvfb:

 Xvfb :99 -ac 

затем проверьте. Это работает для меня.

Вместо того, чтобы понижать рейтинг 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 . Эта проданная проблема для меня

Я исправил это, запустив рекурсивный chown против не только скрипта python с использованием selenium, но и против всего virtualenv, в котором выполнялся скрипт. Я изменил права собственности на пользователя, запускающего файл. После этого эта ошибка исчезла.

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

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

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

обновите свою версию selenuim —> pip install -U selenium

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

Пытаться:

 chmod -R 777 output_file 

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

  • Selenium webdriver send_keys () не работает должным образом
  • selenium webdriver занимает слишком много времени, чтобы загрузить страницу
  • 'selenium.common.exceptions.WebDriverException: Сообщение: u'chrome недоступен
  • Ошибка «Разрешить отказ» разрушает Selenium scraping
  • Нажмите на раскрывающееся меню с помощью Selenium Webdriver
  • Selenium - идентифицировать веб-элемент с помощью src или alt
  • Selenium Webdriver - NoSuchElementExceptions
  • python + selenium webdriver: использование метода аутентификации
  • Автоматические скриншоты при неудаче теста Selenium Webdriver в Python
  • как установить прокси-сервер для chrome в python webdriver
  • Python webdriver для обработки всплывающих окон браузера, который не является предупреждением
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.