Как исправить Selenium WebDriverException: браузер, кажется, вышел, прежде чем мы могли подключиться?
Я установил firefox и Xvfb на свой сервер centos6.4 для использования веб-сервера selenium.
Но, когда я запускаю код, у меня есть ошибка.
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, поэтому я сделал это. Но это все еще не работает.
Может кто-нибудь, пожалуйста, помогите мне?
Заранее благодарю вас!
Edit
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
для гуглеров, этот ответ не сработал у меня, и вместо этого мне пришлось использовать этот ответ. Я использую 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 за первый ответ
Ответ 2
Я столкнулся с этим на (безголовом) сервере Ubuntu 14.04 с установленными Jenkins и xvfb. Я установил последний стабильный Firefox (47), который начал сбой сборки, на котором был запущен python script, который использовал драйвер Firefox для селена (версия 2.53).
По-видимому, Firefox 47+ несовместим с драйвером, используемым в Selenium 2.53, и Selenium 3+ будет использовать новый драйвер под названием "Marionette" или "Gecko Driver" (который еще официально не выпущен).
На этой странице объясняется, как правильно использовать новый драйвер на нескольких языках: https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver
В принципе:
- получить/создать исполняемый файл из проекта на github: https://github.com/mozilla/geckodriver/releases (и убедиться, что perms установлены как исполняемые, IE
chmod a+x /path/to/geckdriver-executable
)
- переименовать/скопировать двоичный код на "проводы"
- убедитесь, что бинарное местоположение добавлено в PATH, которое использует сборка при выполнении теста selenium
- обновите тест селена, чтобы использовать новый драйвер
Для 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)
Ответ 3
У меня тоже была такая же проблема. Я был на Firefox 47 и Selenium 2.53; Я понизил Firefox до 45. Это сработало.
-
Сначала удалите Firefox 47:
sudo apt-get purge firefox
-
Проверьте доступные версии:
apt-cache show firefox | grep Version
Он покажет доступные версии firefox, например:
Версия: 47.0 + build3-0ubuntu0.16.04.1
Версия: 45.0.2 + build1-0ubuntu1
-
Установите определенную версию
sudo apt-get install firefox=45.0.2+build1-0ubuntu1
-
Затем вам не нужно снова обновляться до новой версии.
sudo apt-mark hold firefox
-
Если вы хотите позже обновить
sudo apt-mark unhold firefox
sudo apt-get upgrade
Ответ 4
Проверьте переменную среды DISPLAY
. Запустите echo $DISPLAY
в командной строке.
Если ничего не напечатано, вы запускаете FireFox без какого-либо DISPLAY. Вы должны назначить его! Запустите export DISPLAY=:1
в командной строке перед запуском вашего python script.
Посмотрите эту тему для получения дополнительной информации: http://hashcat.net/forum/thread-1973.html
Ответ 5
Я думаю, что самое простое решение здесь - это просто запустить Python с xvfb-run
:
sudo apt-get install xvfb
xvfb-run python <your_file_or_args>
Ответ 6
Откажитесь от Firefox до предыдущей рабочей версии. Я предлагаю 2 версии. Отключить службу технического обслуживания Firefox.
Я работал над решением, и Служба поддержки Firefox обновила Firefox до последней сборки в фоновом режиме. Это нарушило мой код, и это дало мне эту ошибку.
Теперь он исправлен!
Спасибо всем!
Ответ 7
Эта ошибка связана с тем, что ваш Xvfb не запущен. Перезагрузите xvfb:
Xvfb :99 -ac
затем проверьте.
Это работает для меня.
Ответ 8
Вместо того, чтобы понижать рейтинг 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
postfix.
Эта проданная проблема для меня
Ответ 9
Я исправил это, запустив рекурсивный chown против не только python script, используя селен, но и против всего virtualenv, с которым работал script. Я изменил право собственности на пользователя, запускающего файл. После этого эта ошибка исчезла.
Ответ 10
Я также столкнулся с той же проблемой, что и я:
-
Обновление пакета селена
sudo pip install -U selenium
-
Вместо того, чтобы возвращаться к более старой версии (например, предложено), я свернул на новую версию (48.0, ранее я использовал V47.0).
(для обновления следуйте инструкциям Тоби Спейта, но вместо того, чтобы выбрать более старую версию, выберите более новую версию)
Ответ 11
обновите свою версию selenuim --- > pip install -U selenium
Ответ 12
Это можно решить, изменив разрешение файла выходного файла (или связанных файлов с программой).
Я использовал Firefox webdriver.
Try:
chmod -R 777 output_file
Это разрешило мне ту же самую проблему, что и у вас.