Веб-драйвер Selenium Firefox приводит к ошибке: служба geckodriver неожиданно завершила работу. Код состояния был: 2

Я пишу программу, которая будет искать на веб-сайте определенные записи внутри статей, я использую selenium webdriver для Python.

При попытке подключиться к сайту я получаю исключение:

Traceback (most 
recent call last):
  File "search.py", line 26, in <module>
    test.search_for_keywords()
  File "search.py", line 13, in search_for_keywords
    browser = webdriver.Firefox()
  File "C:\Python27\lib\site-packages\selenium-3.0.0b2-py2.7.egg\selenium\webdriver\firefox\webdriver.py", line 65, in __init__
    self.service.start()
  File "C:\Python27\lib\site-packages\selenium-3.0.0b2-py2.7.egg\selenium\webdriver\common\service.py", line 86, in start
    self.assert_process_still_running()
  File "C:\Python27\lib\site-packages\selenium-3.0.0b2-py2.7.egg\selenium\webdriver\common\service.py", line 99, in assert_process_still_running
    % (self.path, return_code)
selenium.common.exceptions.WebDriverException: Message: Service geckodriver unexpectedly exited. Status code was: 2

Это говорит о том, что веб-драйвер неожиданно завершил работу. Как я могу исправить эту проблему? Я пытаюсь подключиться к firefox версии 48.0 с python версии 2.7.12


person YoYoYo I'm Awesome    schedule 04.09.2016    source источник


Ответы (3)


Запуск тестов python на селен в последней версии браузера Firefox (версия 47 выше)

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

Предварительные требования:

• Mozilla firefox: версия 50.0.2 (версия 47 выше)

• Селен: версия 3.0.2

• Geckodriver: версия 0.11.1

• Python: версия 2.7.3

Настройка:

• Селен: pip install –U selenium

• Geckodriver: загрузите geckodriver со страницы https://github.com/mozilla/geckodriver/releases. , разархивируйте файл и поместите его в папку

• Задайте для переменной среды «Путь» путь geckodriver.

Пример сценария:

from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

# Укажите двоичный путь Firefox

binary = FirefoxBinary(r'C:\Program Files (x86)\Mozilla Firefox\firefox.exe’)

caps = DesiredCapabilities.FIREFOX.copy()

# Установите для браузера "марионетку" значение True

caps['marionette'] = True

# Запустите экземпляр Firefox, указав путь к исполняемому файлу geckodriver

driver = webdriver.Firefox(firefox_binary=binary,capabilities=caps, executable_path`='D:/Installers/geckodriver-v0.11.1-win64/geckodriver')

Вы сделали ...!

person Divya Bharathi    schedule 06.12.2016
comment
Хороший ответ, имейте в виду, что когда вы указываете путь к исполняемому файлу geckodriver, вам нужно включать весь адрес exe. См. Этот ответ: stackoverflow.com/questions/41919932/ - person Vasilis; 31.01.2017

Я исправил это, я удалил egg, который был установлен, и переустановил селен, теперь он работает отлично.

person YoYoYo I'm Awesome    schedule 04.09.2016
comment
Не могли бы вы пояснить, что вы имеете в виду под egg, потому что у меня такая же проблема. - person kiltek; 25.10.2016
comment
посмотрите stackoverflow.com/questions/2051192/what-is-a-python-egg - person TechDog; 27.10.2016

У меня была эта проблема на MacOS Big Sur, и это проблема безопасности. Чтобы решить эту проблему, перейдите в настройки системы - ›Безопасность и конфиденциальность, и внизу появится сообщение о geckodriver. Вам нужно нажать «Все равно разрешить».

person jbright    schedule 23.11.2020