如何使用Selenium 4 (devTools)从网络选项卡获取响应体



我在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);
}

相关内容

最新更新