能否使用Selenium操控已打开的Chrome?无需启用Debug模式
能否操控常规打开的Chrome浏览器?
不行,无法直接操控未开启调试端口的常规Chrome窗口。
原因
Chrome的WebDriver协议依赖浏览器启动时开启的调试端口来建立通信,常规无特殊参数启动的Chrome不会开启这个端口,也没有预留外部程序可直接接入的操控接口,因此WebDriver无法直接连接并控制这类窗口。
目前唯一可行的方案(Debug模式)
虽然你觉得Debug模式不够理想,但这是官方支持的唯一能连接已有Chrome窗口的方式,具体操作步骤如下:
- 关闭所有正在运行的Chrome进程
- 通过命令行启动Chrome并开启调试端口:
- Windows:
chrome.exe --remote-debugging-port=9222 - Mac:
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 - Linux:
google-chrome --remote-debugging-port=9222
- Windows:
- 修改你的Python代码,连接到已开启调试的Chrome窗口:
from selenium import webdriver from selenium.webdriver.chrome.options import Options option = Options() # 指定调试地址 option.add_experimental_option("debuggerAddress", "127.0.0.1:9222") # 无需再指定Service安装驱动,因为Chrome已经启动 driver = webdriver.Chrome(options=option) # 测试操控:获取当前页面标题 print(driver.title)
如果觉得手动用命令行启动麻烦,可以写个脚本自动完成Chrome的启动+调试端口开启,这样使用体验会更接近“常规打开”。
内容的提问来源于stack exchange,提问作者user12355248
相关产品推荐
相关产品推荐

