selenium使用已打开的浏览器
在写selenium的时候,调试网页每次都需要新建一个浏览器实例,再打开网页进行操作,比较费时,尤其是在当网页加载特别慢的情况下;
使用 Chrome DevTools 协议就可以让selenium直接使用当前已经打开的处于远程调试的浏览器实例,以下操作以Edge浏览器为例,Chrome亦可使用:
1、使用 DevTools协议 打开一个新的浏览器实例
注意:此步骤,需要先关闭所有开启的Edge浏览器窗口,否则,将不会进行远程调试,而是仅打开一个新的浏览器实例
于cmd程序中,先进入edge.exe程序所在的文件夹下,再执行下方代码:
C:\Program Files (x86)\Microsoft\Edge\Application> msedge.exe --remote-debugging-port=9222
此时会新建一个处于远程调试的浏览器实例,如果想确认远程调试端口已经打开,请使用 netstat /a 命令查询处于活动状态的端口:
C:\Program Files (x86)\Microsoft\Edge\Application> netstat /a 活动连接 协议 本地地址 外部地址 状态 TCP 0.0.0.0:135 DESKTOP-WISWEL:0 LISTENING TCP 0.0.0.0:443 DESKTOP-WISWEL:0 LISTENING TCP 0.0.0.0:445 DESKTOP-WISWEL:0 LISTENING TCP 127.0.0.1:1471 update:https TIME_WAIT TCP 127.0.0.1:2017 DESKTOP-WISWEL:0 LISTENING TCP 127.0.0.1:4301 DESKTOP-WISWEL:0 LISTENING TCP 127.0.0.1:6972 DESKTOP-WISWEL:0 LISTENING TCP 127.0.0.1:8680 DESKTOP-WISWEL:0 LISTENING TCP 127.0.0.1:9222 DESKTOP-WISWEL:0 LISTENING TCP 127.0.0.1:14147 DESKTOP-WISWEL:0 LISTENING
如是想在远程调试实例中使用用户数据,可以使用 --user-data-dir 参数项,此项为非必填,注意该参数项后的文件路径得事先存在:
msedge.exe --remote-debugging-port=9222 --user-data-dir="D:\Cache\browser_vuser_data\edge_user_01"
信息参考:Microsoft Edge 开发工具协议 - Microsoft Edge Developer documentation | Microsoft Learn
2、使用selenium连接处于远程调试状态的浏览器实例
注意:实测,最好指定 service ,不然 selenium 很有可能找不到浏览器实例
from selenium import webdriver from selenium.webdriver.edge.options import Options from selenium.webdriver.edge.service import Service if __name__ == '__main__': chrome_options = Options() chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222") driver = webdriver.Edge(service=Service(r'./res/msedgedriver.exe'), options=chrome_options) # 输出标签的标题 print(driver.title)
运行上方python代码,将会输出处于远程调试的浏览器实例的窗口title:
转:https://www.cnblogs.com/igigi/p/18020841
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律