如何使用 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 4.0 Alpha更新实践

使用 Selenium Webdriver 控制 Chrome Devtools

使用 Selenium webdriver 运行时是不是可以使用 Chrome 的 devtools?

使用 selenium 获取 Chrome Devtools 内容的 Python 脚本