如何使用 Selenium 4 (devTools) 从网络选项卡获取响应正文
Posted
技术标签:
【中文标题】如何使用 Selenium 4 (devTools) 从网络选项卡获取响应正文【英文标题】:How to get the response body from network tab using Selenium 4 (devTools) 【发布时间】:2021-10-10 14:19:18 【问题描述】:我在 selenium 4 中使用 devTools 从网络选项卡中检索响应。
当我获取 url、响应代码、标题等时,
我找不到检索实际响应正文的方法。 (我的目的是验证响应中的键值对。)
非常感谢任何帮助。
下面是我的代码中的一个 sn-p。
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());
);
【问题讨论】:
您找到解决方案了吗?我正在寻找完全相同的东西。 【参考方案1】: 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();
【讨论】:
这个解决方案有效吗?我正在寻找完全相同的东西。 它对我有用,它创建了另一个线程并开始自行登录。我从未尝试过,因为我们切换到了 Tosca 您使用的是什么语言? Java 还是 C#?你知道 C# 是否可以工作吗?似乎 Java 和 C# 的实现在某种程度上是不同的,这让我怀疑它是否可以与 C# 一起使用。 我用过java。我不知道用其他语言怎么做以上是关于如何使用 Selenium 4 (devTools) 从网络选项卡获取响应正文的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Selenium 从 devtools Network 面板中检索“Initiator”字段?
如何使用“--auto-open-devtools-for-tabs”在 selenium webdriver 中从元素选项卡切换到网络选项卡?
使用 Selenium Webdriver 控制 Chrome Devtools