使用Selenium连接自定义配置Chrome时出现chrome not reachable错误求助
我需要打开带有个人配置的Chrome窗口并通过Selenium连接,但启动Chrome后尝试连接时出现如下错误:
selenium.common.exceptions.WebDriverException:
Message: unknown error: cannot connect to chrome
at localhost:9014 from chrome not reachable.
相关Python代码:
from selenium import webdriver import os # 原代码遗漏导入,需补充 options = webdriver.ChromeOptions() os.system('2024\\startchrome_dev.bat') options.add_experimental_option("debuggerAddress", "localhost:9014") options.add_argument('--no-sandbox') driver = webdriver.Chrome(options=options)
启动Chrome的startchrome_dev.bat内容:
"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe" --remote-debugging-port=9014 --user-data-dir="Profile 1"
Chrome已正常启动,但Selenium无法建立连接,可尝试以下解决方案:
添加启动等待时长:
os.system执行bat后,Chrome需要时间完成启动并监听端口,直接执行后续连接代码会因服务未就绪失败。加入延迟:import time os.system('2024\\startchrome_dev.bat') time.sleep(5) # 可根据实际启动速度调整时长,比如3-10秒修正user-data-dir路径:bat中使用的
Profile 1是相对路径,可能导致Chrome无法正确加载配置文件,建议改为绝对路径,示例:"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe" --remote-debugging-port=9014 --user-data-dir="C:\\Users\\你的用户名\\AppData\\Local\\Google\\Chrome\\User Data\\Profile 1"替换为你实际的用户配置文件路径,确保路径存在且有读写权限。
检查端口占用情况:打开命令提示符执行
netstat -ano | findstr :9014,确认9014端口是否被其他进程占用。若被占用,更换未使用的端口(如9015),同时修改bat文件和Python代码中的端口号。匹配Chrome与ChromeDriver版本:Selenium的ChromeDriver版本必须和本地Chrome版本完全匹配。在Chrome的
设置→关于Chrome查看版本,下载对应版本的ChromeDriver,可通过Service类指定路径(适用于Selenium 4+):from selenium.webdriver.chrome.service import Service service = Service('C:\\path\\to\\chromedriver.exe') driver = webdriver.Chrome(service=service, options=options)清理残留Chrome进程:若之前有未完全关闭的Chrome进程,可能导致端口监听异常。打开任务管理器,结束所有Chrome相关进程后,重新执行bat和Python代码。
内容的提问来源于stack exchange,提问作者gaut

