我在selenium 4中使用devTools从网络选项卡检索响应。
当我得到url,响应代码,头等,
我找不到检索实际响应体的方法。(我的目的是验证响应中的键值对。)
任何帮助都非常感谢。
下面是我的代码片段:
devTools.addListener(Network.responseReceived(),
response -> {
Response res= response.getResponse();
System.out.println("URL - " + res.getUrl());
System.out.println("Status - " + res.getStatus());
System.out.println("Headers - " + res.getHeaders());
System.out.println("Header text - " + res.getHeadersText());
});
devTools = ((ChromeDriver) driver).getDevTools();
devTools.createSession();
devTools.send(Network.clearBrowserCache());
devTools.send(Network.setCacheDisabled(true));
final RequestId[] requestIds = new RequestId[1];
devTools.send(Network.enable(Optional.empty(), Optional.empty(), Optional.of(100000000)));
devTools.addListener(Network.responseReceived(), responseReceived -> {
requestIds[0] = responseReceived.getRequestId();
String url = responseReceived.getResponse().getUrl();
int status = responseReceived.getResponse().getStatus();
String type = responseReceived.getType().toJson();
String headers = responseReceived.getResponse().getHeaders().toString();
String responseBody = devTools.send(Network.getResponseBody(requestIds[0])).getBody();
c#不会使用DevToolsSession获取body,但是你可以使用driver.Manage()。网络来获取它,像这样:
_intercept = _driver.Manage().Network;
await _intercept.StartMonitoring();
_intercept.NetworkRequestSent += _intercept_NetworkRequestSent;
_intercept.NetworkResponseReceived += _intercept_NetworkResponseReceived;
private void _intercept_NetworkResponseReceived(object? sender, NetworkResponseReceivedEventArgs e)
{
Console.WriteLine(e.ResponseBody);
}