如何在Selenium中获取响应头?

sas*_*mar 8 selenium-rc

如何在selenium中获取请求/响应日志?我有一个返回登录信息的ajax调用,每当我尝试通过以下方式捕获它时:

 selenium.captureNetworkTraffic("json");
Run Code Online (Sandbox Code Playgroud)

它只返回客户端项(如图像.pn),但不返回我感兴趣的实际JSON响应.

Geo*_*ker 11

不幸的是,看起来你不能单独用硒以自动方式做到这一点,因为这违背了他们对硒的设计原则.我不同意它(因为它支持获取cookie信息 - 用户实际经历了什么并通过他们的cookie解析?).

他们的'schtick'是selenium帮助您自动化用户所做的事情; 由于用户不关心响应头,为什么这个框架呢?对我来说,这是令人失望的,因为我需要确保返回的内容类型是我认为它应该是(测试API).似乎另一个Stack Overflow问题得出了类似的结论.


Ita*_*mon 5

如果有人仍在寻找答案,有一种方法可以使用 Selenium 4 和 Chrome 开发人员工具 API 获取响应标头

DevTools devTools = driver.getDevTools();
devTools.createSession();
devTools.send(Network.enable(Optional.empty(), Optional.empty(), Optional.empty()));
devTools.addListener(Network.responseReceived(),
        responseReceived -> {
            Headers headers = responseReceived.getResponse().getHeaders();
            if (!headers.isEmpty()){
                System.out.println("Headers:");
                headers.forEach((key,value) -> {
                    System.out.println("    " + key + "="+ value);
                });
            }
        });
Run Code Online (Sandbox Code Playgroud)

这是使用 Selenium 4 alpha 6 测试的

  • 哦petassakes,添加相应的导入!!!!!! (3认同)