2017-06-13 52 views
2

我在Selenium控制的Firefox彈出窗口中看到了一個奇怪的「不可信的證書」錯誤。非常具體。爲了解決這個問題,各種谷歌搜索結果建議關閉木偶,如下所示:Geckodriver/Firefox如何在沒有Marionette的情況下工作? (在FF 53上運行python selenium 3)

from selenium.webdriver.common.desired_capabilities import DesiredCapabilities 

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

而這個工作,但如何?葛底土工人如何與Marionette一起工作?

this other Stack Overflow answer

木偶是Mozilla的Gecko引擎的自動化驅動程序。

答案接着直接說應該失敗:

通過DesiredCapabilities班「在使用Firefox瀏覽器53.x的情況下,如果強行設置‘提線木偶’,以虛假的,你會看到一個UnreachableBrowserException「。

那麼,這是如何工作?

回答

2

這裏有回答您的所有問題:

  1. "untrusted cert" error only on selenium-controlled firefox pop-ups:這是一個常見的問題,我們能夠避免穿過DesiredCapabilities類配置WebDriver實例。
  2. turning off marionette:關閉marionette不再是我們使用Selenium 3.x和最近的Mozilla Firefox瀏覽器版本的解決方案。通過DesiredCapabilities類強制將「marionette」設置爲false,您將無法打開48.x以上版本的Mozilla Firefox瀏覽器。
  3. 關於您的代碼,我在代碼中看不到任何重大錯誤。您已設置「提線木偶」虛假通過DesiredCapabilities類,但仍然有效,並打開其上還安裝你的機器,低於48.x版本
  4. 做一個快速測試遺留版本的Mozilla Firefox瀏覽器會話,我只需複製你的代碼並打開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打開。

enter image description here

  • 現在,作爲每硒3.4.x規格,我做了幾個修改。在初始化驅動程序時,將「marionette」設置爲true,並添加了executable_path
  • 應當指出的是,目前的硒Python綁定是geckodriver不穩定,看起來是建築學具體。你可以在這裏找到github discussionmerge。所以,你可能還需要通過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開。

    enter image description here

    讓我知道如果這個回答你的問題。

    相關問題