Selenium启动Chrome时如何加载本地已安装的扩展程序?
Selenium启动Chrome时如何加载本地已安装的扩展程序?
嗨,这个问题我之前踩过坑!Selenium默认会拉起一个全新的Chrome临时配置环境,完全独立于你平时用的浏览器,所以本地已经装的扩展自然不会出现在这个窗口里。要解决这个问题,核心思路就是让Selenium复用你日常使用的Chrome用户配置文件,这样所有已安装的扩展、书签甚至浏览器设置都会一并加载进来。
下面给你一步步讲怎么操作:
第一步:找到你的Chrome用户配置文件路径
不同操作系统的默认路径不一样,你可以照着找:
- Windows系统:
C:\Users\<你的用户名>\AppData\Local\Google\Chrome\User Data\Default
(把<你的用户名>替换成你电脑上的实际用户名,比如我自己的就是C:\Users\John\AppData\Local\Google\Chrome\User Data\Default) - Mac系统:
~/Library/Application Support/Google/Chrome/Default - Linux系统:
~/.config/google-chrome/Default
第二步:修改你的Selenium代码
在启动Chrome的时候,通过ChromeOptions来指定用户数据目录。把你的原代码改成下面这样就行:
from selenium import webdriver from selenium.webdriver.chrome.options import Options # 初始化Chrome选项对象 chrome_options = Options() # 替换成你自己找到的Chrome用户数据目录路径(注意这里的r是为了让Python不转义反斜杠) chrome_options.add_argument(r"user-data-dir=C:\Users\你的用户名\AppData\Local\Google\Chrome\User Data") # 用配置好的选项启动Chrome driver = webdriver.Chrome(options=chrome_options) driver.get('http://website.com') # 后面的登录逻辑保持不变 email_input = driver.find_element_by_css_selector('input#email') email_input.send_keys('mail@gmail.com') password_input = driver.find_element_by_css_selector('input#password') password_input.send_keys('Password')
几个关键注意事项
- 启动Selenium之前,一定要确保你本地的Chrome浏览器是完全关闭的!因为同一个用户配置文件不能同时被两个Chrome实例占用,否则会弹出“Chrome正在运行”的错误提示。
- 如果你担心影响日常使用的浏览器数据,也可以自己创建一个独立的Chrome配置文件:打开Chrome时用
chrome.exe --profile-directory=MyTestProfile命令,会自动生成一个新的配置文件,之后把代码里的路径改成User Data/MyTestProfile就行,这样测试和日常使用互不干扰。 - 路径里的空格不用特意处理,只要用r前缀转义反斜杠,或者把反斜杠换成正斜杠(比如
C:/Users/你的用户名/AppData/Local/Google/Chrome/User Data)都可以。
如果只需要加载某一个特定的扩展,而不是所有已安装的,也可以通过扩展的CRX文件路径来单独加载,但你要的是全部本地扩展,所以复用用户配置文件的方法最直接高效。
备注:内容来源于stack exchange,提问作者Zakaria Hafti
相关产品推荐
相关产品推荐

