Selenium - 如何从现有的Firefox配置文件中导入所有设置

时间:2017-06-03 22:29:04

标签: python python-3.x selenium firefox

为什么我这样做:

我需要自动化需要客户端SSL证书的网站。我理解这是一个无法使用fp.set_preference()指定的选项。我无法控制我连接的服务器因此无法更改安全设置。

我尝试了什么

我创建了一个单独的Firefox配置文件,它具有所需的“客户端密码保护SSL证书”设置,自动选择一个证书和一些手动代理设置(SOCKS 5)。经过大量谷歌搜索后,我将代码设置如下:

from selenium import webdriver
url = 'https://www.paininneck.co.uk'
fp = webdriver.FirefoxProfile(r"""C:\Users\
<user>\AppData\Local\Mozilla\Firefox\Profiles\<Firefox>""")
driver = webdriver.Firefox(fp)
driver.get(url)

问题:

浏览器确实打开,但仍然使用默认配置文件。我在其他个人资料中更改的所有设置都没有复制过。我的代码中指定的配置文件仍然可以通过Firefox UI进行选择。

我希望我错过了一些简单的东西,所有这些时间谷歌搜索都没有白费!我不愿意更改为默认设置,但是在调整默认配置文件以查看设置是否会复制之后,很明显它们没有复制,Selenium每次都会制作一份干净的副本。

亲切的问候

版本:

Python==3.6.1,
Selenium==3.4.3,
Firefox==53
gecko driver==v0.16.1
OS==Windows(Its for work dont judge me!)

1 个答案:

答案 0 :(得分:2)

使用Selenium 3.4.x,Python 3.6.1以及geckodriver v0.16.1&amp; Mozilla Firefox 53.0,您可以通过以下步骤使用现有的Firefox配置文件:

  1. 在Windows框中找到Firefox Profile目录。对于例如我的Firefox个人资料"debanjan"位于C:\\Users\\AtechM_03\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles,名称为w8iy627a.debanjan
  2. 接下来,您必须在启动webdriver时指定Firefox配置文件目录的绝对路径。
  3. 以下是在我的Windows机器上打开现有Firefox配置文件'debanjan'的工作代码:

      

    需要注意的是,当前的Selenium-Python绑定在geckodriver中是不稳定的,并且看起来是特定于架构的。您可以在此处找到github discussionmerge。所以你可能还需要在初始化 webdriver 时传递firefox二进制文件的绝对路径

    from selenium import webdriver
    from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
    
    profile = webdriver.FirefoxProfile('C:\\Users\\AtechM_03\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\w8iy627a.debanjan')
    binary = FirefoxBinary('C:\\Program Files\\Mozilla Firefox\\firefox.exe')
    
    driver = webdriver.Firefox(firefox_profile=profile, firefox_binary=binary, executable_path="C:\\Utility\\BrowserDrivers\\geckodriver.exe")
    url = 'https://www.paininneck.co.uk'
    driver.get(url)