Не удается открыть браузер с Selenium после обновления Firefox

Я использую Selenium WebDriver на Ubuntu Desktop 16.04, и я не могу открыть браузер. После обновления Firefox я получаю следующую ошибку (до этого все работало):

Traceback (most recent call last): File "test.py", line 6, in  driver = webdriver.Firefox() File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/firefox/webdriver.py", line 81, in __init__ self.binary, timeout) File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/firefox/extension_connection.py", line 51, in __init__ self.binary.launch_browser(self.profile, timeout=timeout) File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/firefox/firefox_binary.py", line 68, in launch_browser self._wait_until_connectable(timeout=timeout) File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/firefox/firefox_binary.py", line 98, in _wait_until_connectable raise WebDriverException("The browser appears to have exited " 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. 

7 Solutions collect form web for “Не удается открыть браузер с Selenium после обновления Firefox”

Начиная с версии Firefox версии 47.0 (которая вышла немного позже), для подключения к Firefox должен использоваться новый драйвер (созданный mozilla вместо selenium) из-за ошибки, появившейся в этой версии. Начиная с версии Firefox версии 48.0 старый драйвер будет полностью устарел, и только Marionette можно будет использовать, поэтому лучше переключиться сейчас. Смотрите: Marionette Webdriver для Firefox

Загрузите драйвер (в OSX просто используйте brew install geckodriver ), переименуйте исполняемый файл в wires.exe на windows или wires в * nix-системах и убедитесь, что исполняемый файл присутствует в вашем системном пути, а затем используйте этот драйвер в своей программе старого драйвера, используя следующее:

При использовании локального webdriver:

Python:

 firefox_capabilities = DesiredCapabilities.FIREFOX firefox_capabilities['marionette'] = True driver = webdriver.Firefox(capabilities=firefox_capabilities) 

Рубин:

 driver = Selenium::WebDriver.for :firefox, marionette: true 

Javascript:

 var capabilities = Capabilities.firefox(); capabilities.set('marionette', true); var driver = new webdriver.Builder().withCapabilities(capabilities).build(); 

Ява:

 DesiredCapabilities capabilities = DesiredCapabilities.firefox(); capabilities.setCapability("marionette", true); Webdriver driver = new FirefoxDriver(capabilities); 

C #:

 var driver = new FirefoxDriver(new FirefoxOptions()); 

При использовании seleniumовой сетки:

При использовании seleniumовой сетки драйвер должен присутствовать в пути для всех машин в вашей сетке.

Python:

 firefox_capabilities = DesiredCapabilities.FIREFOX firefox_capabilities['marionette'] = True driver = webdriver.Firefox(capabilities=firefox_capabilities) 

Рубин:

 caps = Selenium::WebDriver::Remote::Capabilities.firefox marionette: true driver = Selenium::WebDriver.for :firefox, desired_capabilities: caps 

Ява:

 DesiredCapabilities capabilities = DesiredCapabilities.firefox(); // Set Marionette on so the Grid will use this instead of normal FirefoxDriver capabilities.setCapability("marionette", true); WebDriver driver = new RemoteWebDriver(capabilities); 

C #:

 DesiredCapabilities capabilities = DesiredCapabilities.Firefox(); // Set Marionette on so the Grid will use this instead of normal FirefoxDriver capabilities.SetCapability("marionette", true); var driver = new RemoteWebDriver(capabilities); 

FIXED : решение в это время – понизить Firefox! выполните эту команду, чтобы получить список доступных версий Firefox.

 apt-cache show firefox | grep Version 

Мой результат:

 Version: 47.0+build3-0ubuntu0.16.04.1 Version: 45.0.2+build1-0ubuntu1 

Установка:

 sudo apt-get install firefox=45.0.2+build1-0ubuntu1 

Чтобы сохранить эту версию и запретить обновления:

 sudo apt-mark hold firefox 

Если вы хотите отменить версию Firefox и разрешить обновления:

 sudo apt-mark unhold firefox sudo apt-get upgrade 

Решение . Обновите Firefox до 47.0.1 и Selenium до 2.53.1.

Эта комбинация работала для меня.

Для получения дополнительной информации см. https://stackoverflow.com/a/37728659/6469532

У некоторых людей есть проблема, что некоторые button s или select не могут быть выбраны в marionette модусе.

Альтернативой является использование более старой версии firefox:

Вы можете скачать здесь двоичный код и использовать его здесь:

 from selenium import webdriver from selenium.webdriver.firefox.firefox_binary import FirefoxBinary binary = FirefoxBinary('path/to/binary') driver = webdriver.Firefox(firefox_binary=binary) 

РЕШЕНИЕ понижения до версии 45:

 firefox --version Mozilla Firefox 47.0 apt-get remove firefox wget https://ftp.mozilla.org/pub/firefox/releases/45.0/linux-x86_64/en-US/firefox-45.0.tar.bz2 tar -xjf firefox-45.0.tar.bz2 mv firefox /opt/firefox45 ln -s /opt/firefox45/firefox /usr/bin/firefox firefox --version Mozilla Firefox 45.0 

1) Загрузите geckodriver 0.6.2, распакуйте, переименуйте в «проводы» не «wire.exe» https://github.com/mozilla/geckodriver/releases

2) Добавьте исполняемый файл проводов в PATH (я поместил это в свою папку python C: Program Files \ Python …) Выберите «Пуск», выберите «Панель управления». дважды щелкните «Система» и выберите вкладку «Дополнительно». Выберите переменные среды. … В окне «Редактировать системную переменную» (или «Новая системная переменная») укажите значение переменной среды PATH. … (используйте ‘;’ для разделения путей, т. Е. [C: Users \ Reuben; C: Program Files \ Python]

3) Переход на Firefox 45 https://ftp.mozilla.org/pub/firefox/releases/45.0.2/win64/en-US/

Не нужно понижать Firefox. Я столкнулся с проблемой с версией Windows и Firefox 49. Я использовал 64-битную версию geckodrvier. Я изменил его на 32-битную версию geckodrvier и решил проблему. Теперь браузер открывается должным образом без каких-либо проблем.

  • Как браузер знает, когда запрашивать пользователя для сохранения пароля?
  • Символ Cors Access-Control-Allow-Headers игнорируется?
  • Как заставить файлы открываться в браузере вместо загрузки (PDF)?
  • В чем разница между «Normal Reload», «Hard Reload» и «Empty Cache and Hard Reload» в Chrome?
  • Тайм-аут браузера
  • Отключение кеша Chrome для разработки веб-сайта
  • Как определить, попал ли пользователь на страницу с помощью кнопки «Назад»?
  • Лучший компонент браузера Java / Swing?
  • Мне нужен Content-Type: application / octet-stream для загрузки файла?
  • Является ли jQuery $ .browser устаревшим?
  • Давайте будем гением компьютера.