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

posted @   rmticocean  阅读(45)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示