Python Selenium 抓取 network 网络请求

需求背景

使用 Python + Selenium 进行 UI 自动化测试时,需要根据 api 接口的返回信息(比如创建接口返回的对象编号或者 id),进行下一步的测试。
手工测试时,会根据创建时间或者其它业务信息综合判断,来找到刚刚提交的信息。但是自动化测试在并发测试的时候就容易判断错误。

解决方案

import json
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

caps = DesiredCapabilities.CHROME
caps['goog:loggingPrefs'] = {'performance': 'ALL'}
driver = webdriver.Chrome(desired_capabilities=caps)
driver.get('https://stackoverflow.com/questions/52633697/selenium-python-how-to-capture-network-traffics-response')

def process_browser_log_entry(entry):
    response = json.loads(entry['message'])['message']
    return response

browser_log = driver.get_log('performance') 
events = [process_browser_log_entry(entry) for entry in browser_log]
events = [event for event in events if 'Network.responseReceived' in event['method']]

driver.execute_cdp_cmd('Network.getResponseBody', {'requestId': events[0]["params"]["requestId"]}) 

此处 0 为浏览器第一个 network 示例,可以通过遍历 events ,根据 url 来确定需要抓取的网络请求
Python Selenium 抓取 network 网络请求_第1张图片

参考

https://stackoverflow.com/questions/52633697/selenium-python-how-to-capture-network-traffics-response

你可能感兴趣的:(自动化测试,python,selenium,自动化测试)