Selenium 获取开发者工具 Network 指定 URL 响应数据
使用 Selenium 可以通过以下步骤获取开发者工具中 Network 指定 URL 的响应数据:
- 启动 Selenium WebDriver,并打开需要测试的网页。
- 打开开发者工具(可以使用 Selenium 的 execute_script 方法执行 JavaScript 代码来打开开发者工具)。
- 切换到 Network 选项卡,选择需要获取响应数据的请求。
- 在请求的详情面板中,查找响应数据并保存到变量中。
- 关闭开发者工具并关闭 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 浏览器,其他浏览器可能需要调整一些代码。另外,获取响应数据的请求必须在打开开发者工具后才能发出,否则可能无法捕获响应数据。
原文地址: https://www.cveoy.top/t/topic/m5gH 著作权归作者所有。请勿转载和采集!