Selenium启动多Chrome自定义配置文件异常问题求助
解决Selenium启动多个Chrome自定义配置文件失败的问题
我想用Selenium启动多个Chrome自定义配置文件执行任务,写了如下代码:
from selenium import webdriver from selenium.webdriver.chrome.options import Options # 指定Chrome配置文件路径 profile1_path = "C:\Users\Administrator\AppData\Local\Google\Chrome\User Data" profile2_path = "C:\Users\Administrator\AppData\Local\Google\Chrome\User Data" # 为每个配置文件设置选项 options1 = webdriver.ChromeOptions() options1.add_argument("--user-data-dir=" + profile1_path) options1.add_argument('--profile-directory=Profile 41') options2 = webdriver.ChromeOptions() options2.add_argument("--user-data-dir=" + profile2_path) options2.add_argument('--profile-directory=Profile 42') # 启动第一个浏览器实例 driver1 = webdriver.Chrome(options=options1) driver1.get("https://www.google.com") # 启动第二个浏览器实例 driver2 = webdriver.Chrome(options=options2) driver2.get("https://www.google.com")
运行时第一个配置文件正常工作,但第二个配置文件启动后无法访问Google,报错信息:
错误信息:未知错误:Chrome启动失败:正常退出。(未知错误:DevToolsActivePort文件不存在)(从路径C:\Program Files\Google\Chrome\Application\chrome.exe启动的进程已不再运行,因此ChromeDriver认为Chrome已崩溃。)
解决方法
1. 为每个实例指定独立调试端口
共享同一个user-data-dir启动多实例时,必须分配不同的调试端口,避免端口冲突。在每个ChromeOptions中添加--remote-debugging-port参数:
options1.add_argument("--remote-debugging-port=9222") options2.add_argument("--remote-debugging-port=9223")
2. 添加内存优化参数
添加--disable-dev-shm-usage解决部分环境下内存不足导致的崩溃问题:
options1.add_argument("--disable-dev-shm-usage") options2.add_argument("--disable-dev-shm-usage")
3. 清理后台Chrome进程
启动前关闭所有Chrome窗口及后台进程,防止配置文件被占用。
完整修正代码
from selenium import webdriver # 统一配置文件根路径 user_data_dir = "C:\Users\Administrator\AppData\Local\Google\Chrome\User Data" # 配置第一个实例 options1 = webdriver.ChromeOptions() options1.add_argument(f"--user-data-dir={user_data_dir}") options1.add_argument('--profile-directory=Profile 41') options1.add_argument("--remote-debugging-port=9222") options1.add_argument("--disable-dev-shm-usage") # 配置第二个实例 options2 = webdriver.ChromeOptions() options2.add_argument(f"--user-data-dir={user_data_dir}") options2.add_argument('--profile-directory=Profile 42') options2.add_argument("--remote-debugging-port=9223") options2.add_argument("--disable-dev-shm-usage") # 启动浏览器实例 driver1 = webdriver.Chrome(options=options1) driver1.get("https://www.google.com") driver2 = webdriver.Chrome(options=options2) driver2.get("https://www.google.com")
内容的提问来源于stack exchange,提问作者TheMaster
相关产品推荐
相关产品推荐

