如何在Python版Selenium Webdriver中就地使用现有Firefox配置文件
正确实现方案
不要使用options.profile属性(该属性的设计逻辑就是先复制配置文件到临时目录再启动,天生会触发复制行为),直接通过Options的add_argument方法传入-profile启动参数即可:
from selenium.webdriver import Firefox from selenium.webdriver.firefox.options import Options options = Options() # 替换为你本地的Firefox配置文件实际路径 options.add_argument("-profile") options.add_argument("<PROFILE-DIR>") driver = Firefox(options=options)
说明
- 之前直接修改
DesiredCapabilities传入参数的方式失效,是因为新版Selenium的Firefox驱动会优先读取Options类中配置的参数,且自定义参数需要通过add_argument方法传递才能被正确识别到geckodriver的启动参数列表中。 - 启动后查看
geckodriver.log中的Firefox启动命令,会直接携带你指定的配置文件路径,不会生成/tmp目录下的临时配置文件,所有读写操作都会直接作用于原配置目录。 - 如果目标配置文件已经被一个正常启动的Firefox实例占用,需要先关闭该实例,否则Firefox会抛出配置文件被锁定的报错,这是Firefox自身的多实例限制,和Selenium无关。
内容的提问来源于stack exchange,提问作者grobber
相关产品推荐
相关产品推荐

