如何利用Chrome已存密码实现自动登录脚本及解决Selenium目录冲突
解决Chrome默认配置文件与Selenium/TestCafe的会话冲突及密码存储问题
一、让Selenium附加到手动打开的Chrome默认会话(完美共享配置)
这是最直接解决冲突的方案,完全不影响你日常浏览的默认配置,只需让Selenium"挂靠"到已启动的Chrome实例上:
先手动启动带远程调试端口的Chrome:
关闭所有Chrome窗口后,打开终端执行以下命令(适配macOS路径):/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222这条命令会启动你的默认Chrome配置文件,同时开启9222端口供Selenium连接。
修改Selenium代码连接到该会话:
删掉原来的user-data-dir参数,替换成调试地址配置:from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() # 连接到已启动的Chrome实例 options.add_experimental_option("debuggerAddress", "127.0.0.1:9222") driver = webdriver.Chrome(options=options)这样启动的Selenium会直接控制你手动打开的Chrome窗口,完全共享默认配置里的密码、书签等数据,再也不会出现目录占用的报错。
二、使用新配置文件时启用密码存储功能
如果不想共享会话,想用独立的Selenium专属配置,只需在启动时添加密码管理相关的参数和偏好设置:
创建新的用户数据目录:
比如新建路径/Users/{user}/Library/Application Support/Google/Chrome/SeleniumProfile(替换成你的系统用户名)配置Selenium参数开启密码存储:
from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() options.add_argument('user-data-dir=/Users/{user}/Library/Application Support/Google/Chrome/SeleniumProfile') # 启用密码管理器核心功能 options.add_argument('--enable-features=PasswordManager') # 通过偏好设置开启密码存储开关 options.add_experimental_option("prefs", { "credentials_enable_service": True, "profile.password_manager_enabled": True }) driver = webdriver.Chrome(options=options)第一次启动这个新配置时,手动在Chrome设置里打开"Offer to save passwords"选项,之后Selenium会话就会自动保存和填充密码了。
三、TestCafe使用指定配置文件(默认或自定义)
TestCafe默认使用临时配置,要让它加载你的默认或自定义配置,只需在运行命令时指定userProfile参数:
# 使用Chrome默认配置 testcafe chrome:userProfile=/Users/{user}/Library/Application Support/Google/Chrome/Default # 使用自定义配置 testcafe chrome:userProfile=/Users/{user}/Library/Application Support/Google/Chrome/SeleniumProfile
这样TestCafe就会加载指定的配置文件,密码等个人数据也会被正常保留。
内容的提问来源于stack exchange,提问作者0472037
相关产品推荐
相关产品推荐

