使用Selenium捕获网络XHR日志(带参数的请求/响应)

时间:2018-03-21 19:42:28

标签: javascript java selenium selenium-webdriver rest-assured-jsonpath

我尝试捕获网络XHR日志(chrome浏览器),它通常显示Request(MethodType,Headers,parameters)和使用Selenium webdriver的响应,但我只能得到api的客户端发送到服务器的请求(没有参数),搜索时我发现下面的代码,它只提供apis请求: -

kafka-server-start.sh

但我想得到客户端(浏览器)发送给服务器的所有参数以及响应。 *同样的功能如何适用于firefox。

提前致谢!!

2 个答案:

答案 0 :(得分:1)

您可以使用browsermobproxy

以下代码段捕获了所有请求和响应日志。

    // start the proxy
    BrowserMobProxy proxy = new BrowserMobProxyServer();
    proxy.start(0);

    // get the Selenium proxy object
    Proxy seleniumProxy = ClientUtil.createSeleniumProxy(proxy);

    // configure it as a desired capability
    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability(CapabilityType.PROXY, seleniumProxy);

    // start the browser up
    WebDriver driver = new FirefoxDriver(capabilities);

    // enable more detailed HAR capture, if desired (see CaptureType for the complete list)
    proxy.enableHarCaptureTypes(CaptureType.REQUEST_CONTENT, CaptureType.RESPONSE_CONTENT);

    // create a new HAR with the label "yahoo.com"
    proxy.newHar("yahoo.com");

    // open yahoo.com
    driver.get("http://yahoo.com");

    // get the HAR data
    Har har = proxy.getHar();

任何har查看器都可以查看捕获的响应。

HARReport

答案 1 :(得分:0)

如果您使用Axios之类的库进行XHR调用,则可以利用请求拦截器响应拦截器作为中间件来拦截并最终记录每个XHR调用无需依靠无头浏览器界面即可做出响应。

请求示例

client.interceptors.request.use(
  req => {
     // req contains your request data 
  },
  err => Promise.reject(err),
);

响应示例

client.interceptors.response.use(
  response => response, // XHR Response
  error => {
    const originalRequest = error.config; // Error.config contains too the original request
    // ...code
  })