为什么我这样做:
我需要自动化需要客户端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!)
答案 0 :(得分:2)
使用Selenium 3.4.x,Python 3.6.1以及geckodriver v0.16.1&amp; Mozilla Firefox 53.0,您可以通过以下步骤使用现有的Firefox配置文件:
"debanjan"
位于C:\\Users\\AtechM_03\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles
,名称为w8iy627a.debanjan
。 webdriver
时指定Firefox配置文件目录的绝对路径。 以下是在我的Windows机器上打开现有Firefox配置文件'debanjan'
的工作代码:
需要注意的是,当前的Selenium-Python绑定在geckodriver中是不稳定的,并且看起来是特定于架构的。您可以在此处找到github discussion和merge。所以你可能还需要在初始化 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)