需求背景
使用 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')defprocess_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"]})
此处 206 为浏览器第一个 network 示例,可以通过遍历 events ,根据 url 来确定需要抓取的网络请求
参考
版权归原作者 蒋桐城 所有, 如有侵权,请联系我们删除。