You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Selenium Python使用CDP命令采集性能追踪数据?

使用Selenium-Python采集Chrome Profiler追踪转储

以下是利用Chrome DevTools Protocol(CDP)异步监听Tracing.dataCollected事件、采集追踪转储的完整示例:

完整代码示例

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import json

# 用于存储追踪数据的列表
trace_data = []

# 定义Tracing.dataCollected事件的处理函数
def handle_trace_data(event):
    trace_data.append(event["params"]["value"])

# 配置Chrome浏览器选项
chrome_options = Options()
chrome_options.add_argument("--start-maximized")

# 初始化Chrome浏览器
driver = webdriver.Chrome(options=chrome_options)

# 创建CDP会话,用于执行CDP命令和监听事件
cdp_session = driver.create_cdp_session()

# 注册Tracing.dataCollected事件监听器
cdp_session.add_listener("Tracing.dataCollected", handle_trace_data)

# 启动追踪,可根据需求调整配置参数
cdp_session.execute_cdp_cmd("Tracing.start", {
    "categories": ["devtools.timeline"],  # 指定追踪类别
    "options": "sampling-frequency=1000",  # 设置采样频率(毫秒)
    "bufferUsageReportingInterval": 1000
})

# --------------------------
# 执行需要追踪的业务操作
# --------------------------
driver.get("https://example.com")  # 示例:打开目标页面
# 这里可以添加更多需要追踪的操作,比如点击、滚动等

# 停止追踪
cdp_session.execute_cdp_cmd("Tracing.end", {})

# 等待片刻,确保所有追踪数据都被收集完毕
driver.implicitly_wait(2)

# 将追踪数据保存为JSON格式的转储文件
with open("chrome_profiler_trace.json", "w", encoding="utf-8") as f:
    json.dump(trace_data, f, indent=2, ensure_ascii=False)

# 关闭浏览器
driver.quit()

关键说明

  • 数据存储:trace_data列表会持续收集Tracing.dataCollected事件返回的所有追踪片段,这些片段最终会合并成完整的追踪数据。
  • 事件监听:通过cdp_session.add_listener注册事件回调函数,实现异步捕获追踪数据。
  • 追踪配置:Tracing.start的参数可按需调整,比如修改categories指定要追踪的性能类别(如blink.user_timing、v8.execute等),调整sampling-frequency控制采样精度。
  • 结果查看:生成的chrome_profiler_trace.json文件可直接导入Chrome DevTools的「Performance」面板,可视化分析性能数据。

内容的提问来源于stack exchange,提问作者Shivam Mishra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 23:53:10