如何通过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
相关产品推荐
相关产品推荐

