使用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');")
devtools_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浏览器,其他浏览器可能需要调整一些代码。另外,获取响应数据的请求必须在打开开发者工具后才能发出,否则可能无法捕获响应数据。

Python 怎么用selenium获取开发者工具中Network指定url的响应数据?

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

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