Как Geckodriver / Firefox работает без Marionette? (запуск pelon selenium 3 против FF 53)

Я вижу странную ошибку «ненадежного сертификата» только на всплывающих окнах, управляемых селеном. Очень специфично. Чтобы решить эту проблему, различные результаты Google предложили отключить марионетку, например:

from selenium.webdriver.common.desired_capabilities import DesiredCapabilities firefox_capabilities = DesiredCapabilities.FIREFOX firefox_capabilities['marionette'] = False driver = webdriver.Firefox() 

И это работает, но как? Как вообще работает geckodriver с Marionette?

Из этого другого ответа на переполнение стека :

Marionette – это драйвер для автоматизации движка Gecko Mozilla.

В ответе говорится о том, что это должно потерпеть неудачу:

«В случае использования браузеров Firefox 53.x, если вы решительно настроили« марионетку »на false через класс DesiredCapabilities, вы увидите исключение UnreachableBrowserException».

Итак, как это работает?

One Solution collect form web for “Как Geckodriver / Firefox работает без Marionette? (запуск pelon selenium 3 против FF 53)”

Вот ответы на все ваши вопросы:

  1. "untrusted cert" error only on selenium-controlled firefox pop-ups . Это обычная проблема, и мы можем избежать этого, настроив экземпляр WebDriver через класс DesiredCapabilities .
  2. turning off marionette : отключение marionette больше не является решением, когда мы работаем с Selenium 3.x и последними версиями Mozilla Firefox Browser. Сильно настроив «марионетку» на false через класс DesiredCapabilities, вы не сможете открыть браузер Mozilla Firefox выше версии 48.x.
  3. Что касается вашего кода, я не вижу серьезных ошибок в вашем коде. Вы установили «марионетку» в false через класс DesiredCapabilities но все еще работаете и открываете сеанс Mozilla Firefox Browser устаревших версий, который также установлен на вашем компьютере, который ниже версии 48.x
  4. Чтобы выполнить быстрый тест, я просто скопировал ваш код и открыл URL-адрес https://www.whatismybrowser.com/ .

Код :

  from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities firefox_capabilities = DesiredCapabilities.FIREFOX firefox_capabilities['marionette'] = False driver = webdriver.Firefox() driver.get('https://www.whatismybrowser.com/') 

Результат : открывается Mozilla Firefox версии 47.

введите описание изображения здесь

  1. Теперь, согласно спецификациям Selenium 3.4.x, я сделал пару модификаций. Повернул «марионетку» к истинному и добавленному executable_path при инициализации драйвера.

Следует отметить, что текущая привязка Selenium-Python нестабильна с geckodriver и выглядит специфичной для архитектуры. Вы можете найти обсуждение github и объединиться здесь. Таким образом, вам может потребоваться передать абсолютный путь двоичного firefox_binary firefox как аргумент firefox_binary при инициализации webdriver

Код :

 from selenium import webdriver from selenium.webdriver.firefox.firefox_binary import FirefoxBinary from selenium.webdriver.common.desired_capabilities import DesiredCapabilities binary = FirefoxBinary('C:\\Program Files\\Mozilla Firefox\\firefox.exe') firefox_capabilities = DesiredCapabilities.FIREFOX firefox_capabilities['marionette'] = True driver = webdriver.Firefox(firefox_binary=binary,executable_path='C:\\Utility\\BrowserDrivers\\geckodriver.exe') driver.get('https://www.whatismybrowser.com/') 

Результат : открывается версия Mozilla Firefox версии 53.

введите описание изображения здесь

Дайте мне знать, если это ответит на ваш вопрос.

  • Задайте профиль предпочтений автоматической загрузки, используя selenium2library
  • Элемент Python with Selenium "не привязан к документу страницы"
  • Ошибка Chromedriver в Linux
  • Python Selenium Javascript Ссылка Нажмите «Не удалось выполнить»
  • Как запустить метод перед всеми тестами во всех классах?
  • Загрузить файл из sharepoint с помощью selenium webdriver python
  • Использование селеном профиля firefox
  • Firefox + Selenium WebDriver и автоматически загружайте файл csv
  • Python - лучший язык программирования в мире.