使用 Selenium 可以通过以下步骤获取开发者工具中 Network 指定 URL 的响应数据:

  1. 启动 Selenium WebDriver,并打开需要测试的网页。
  2. 打开开发者工具(可以使用 Selenium 的 execute_script 方法执行 JavaScript 代码来打开开发者工具)。
  3. 切换到 Network 选项卡,选择需要获取响应数据的请求。
  4. 在请求的详情面板中,查找响应数据并保存到变量中。
  5. 关闭开发者工具并关闭 WebDriver。

下面是一个示例代码,可以用来获取指定 URL 的响应数据:

from selenium import webdriver

# 启动 WebDriver
driver = webdriver.Chrome()

# 打开需要测试的网页
driver.get('http://example.com')

# 打开开发者工具
driver.execute_script('window.open('about:blank','_blank');')
developtools_window = driver.window_handles[-1]
driver.switch_to.window(devtools_window)
driver.get('chrome://devtools/content/devtools/index.html')
driver.execute_script('''
    document.querySelector('[command='Browser:Reload']').click();
    document.querySelector('[command='devtools.network.enable']').click();
''')

# 切换到 Network 选项卡
driver.execute_script('''
    const tab = UI.panels.network._tabbedPane.tabBar._tabs.filter(t => t.id === 'network')[0];
    tab.click();
''')

# 等待 Network 面板加载完毕
driver.execute_script('''
    UI.panels.network._tabbedPane.addEventListener('tab-selected', function listener(tab) {
        if (tab.tabId === 'network') {
            UI.panels.network._tabbedPane.removeEventListener('tab-selected', listener);
            window.dispatchEvent(new Event('network-ready'));
        }
    });
''')

driver.execute_script('''
    return new Promise((resolve, reject) => {
        window.addEventListener('network-ready', () => {
            const requests = NetworkLogView._networkLog._requests;
            const request = requests.filter(r => r.url === 'http://example.com')[0];
            if (request) {
                request.getContent((content) => {
                    resolve(content);
                });
            } else {
                reject(new Error('Request not found'));
            }
        });
    });
''')
response_data = driver.execute_script('return arguments[0];')

# 关闭开发者工具并关闭 WebDriver
driver.close()
driver.switch_to.window(driver.window_handles[0])
driver.quit()

# 打印响应数据
print(response_data)

需要注意的是,上述代码只适用于 Chrome 浏览器,其他浏览器可能需要调整一些代码。另外,获取响应数据的请求必须在打开开发者工具后才能发出,否则可能无法捕获响应数据。

Selenium 获取开发者工具 Network 指定 URL 响应数据

原文地址: https://www.cveoy.top/t/topic/m5gH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录