Selenium 中是否有任何方法可以监控来自应用程序的 XHR 请求。我想创建一个测试,其中测试单击按钮,然后检查是否发出了正确的 Ajax 请求。
编辑,如果重要的话,我正在使用 PHP Unit。
您可以使用 Selenium 捕获网络流量,然后尝试获取您需要的内容
Selenium s = new DefaultSelenium(...);
s.start("captureNetworkTraffic=true");
s.open("http://www.google.com");
String traffic = s.captureNetworkTraffic("json");
然后通过在流量中找到您想要的内容来进行断言。
尝试这个Python代码,它对我有用。
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.set_capability('goog:loggingPrefs', {'performance': 'ALL'})
driver=webdriver.Chrome(options=chrome_options)
perfs = driver.get_log('performance')
for log_data in perfs:
message_ = log_data['message']
try:
log_json = json.loads(message_)
log = log_json['message']
except:pass
if log['method'] != 'Network.responseReceived':continue
if log['params']['type']!='Fetch' or log['params']['type']!='XHR':continue
response = driver.execute_cdp_cmd('Network.getResponseBody', {'requestId': log['params']['requestId']})