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

如何通过Selenium在Chrome特定标签页获取单一页面性能日志?

只保留tesco.co.uk性能日志的解决方案

方法一:切换标签后清空旧日志

切换到新标签页后,先清空之前累积的性能日志,再访问目标站点,后续获取的日志就只属于tesco.co.uk。

from selenium import webdriver

def get_network_logs(driver):
    logs = driver.get_log("performance")
    print(logs)
    return logs

def switch_to_tab(driver, tab_index):
    handles = driver.window_handles
    driver.switch_to.window(handles[tab_index])

# 初始化Chrome浏览器,开启性能日志记录
options = webdriver.ChromeOptions()
options.set_capability("goog:loggingPrefs", {"performance": "ALL"})
driver = webdriver.Chrome(options=options)

# 访问youtube.com
driver.get('https://www.youtube.com')

# 打开新标签页
driver.execute_script("window.open('');")
# 切换到新标签页
switch_to_tab(driver, 1)

# 清空之前的性能日志(清除youtube产生的日志)
driver.get_log("performance")

# 访问tesco.co.uk
driver.get('https://www.tesco.co.uk/')

# 获取tesco的性能日志
tesco_logs = get_network_logs(driver)

# 关闭浏览器
driver.quit()

方法二:过滤日志中的域名

如果需要保留所有日志但只提取tesco相关条目,可以解析每条日志的请求URL,筛选出域名包含tesco.co.uk的日志。

import json
from selenium import webdriver

def get_network_logs(driver):
    logs = driver.get_log("performance")
    tesco_logs = []
    for log in logs:
        try:
            # 解析日志的message字段
            log_msg = json.loads(log['message'])['message']
            # 检查是否为网络请求日志,且URL包含tesco.co.uk
            if 'params' in log_msg and 'request' in log_msg['params']:
                request_url = log_msg['params']['request']['url']
                if 'tesco.co.uk' in request_url:
                    tesco_logs.append(log)
        except (KeyError, json.JSONDecodeError):
            # 跳过解析失败的日志
            continue
    print(tesco_logs)
    return tesco_logs

def switch_to_tab(driver, tab_index):
    handles = driver.window_handles
    driver.switch_to.window(handles[tab_index])

# 初始化浏览器
options = webdriver.ChromeOptions()
options.set_capability("goog:loggingPrefs", {"performance": "ALL"})
driver = webdriver.Chrome(options=options)

driver.get('https://www.youtube.com')
driver.execute_script("window.open('');")
switch_to_tab(driver, 1)
driver.get('https://www.tesco.co.uk/')

tesco_logs = get_network_logs(driver)

driver.quit()

方法对比

  • 方法一更高效,直接截断旧日志,无需额外解析操作,适合只需要目标站点日志的场景。
  • 方法二更灵活,保留了所有原始日志,适合需要事后分析多站点日志的场景,但需要额外的解析逻辑。

内容的提问来源于stack exchange,提问作者Roy idiot

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 10:13:15