正在查看与 Protractor/Webdriver 的 AJAX/HTTP 通话?有 $HttpBackend return 数据发送给它吗?

Peeking into an AJAX/HTTP call with Protractor/Webdriver? Have $HttpBackend return data sent to it?

有没有办法监视浏览器使用 Protractor/Webdriver 发出的 $http/AJAX 请求?

有没有办法让 $http-backend return 发送给它的请求?

听起来这可能是您需要的:

NodeJS bindings for browsermob-proxy to programmatically generate HAR files

本质上你需要一个代理服务器运行,通过代理发送Selenium流量,然后通过一种方式(JavaScript绑定,RESTAPI)获得一个可查询的HAR 文件,其中包含从您的 Web 请求生成的所有 HTTP 请求和响应的完整详细信息。

编辑:

HAR 文件只是一个 JSON 存档,因此从 JavaScript 中检查和查询它应该不会太困难。这里有几个可能有用的 Node 库:

我使用了 HTTP 拦截器。起初让它工作很麻烦,三种不同的语法都使元素定位器失败并且 selenium 立即退出。但随后它在下一次尝试中起作用。在这里:它将来自 HTTP 请求的数据放入一个 $rootScope 变量中,然后可以使用 .evaluate()

断言该变量

    var e2eInterceptors = function() {
      return angular.module('e2eInterceptors', ['yetiWonderland']).factory('loginInterceptor', function($rootScope) {
        return {
          request: function(config) {
            if (config.method === 'PUT'){
              $rootScope.testData = config.data;
              console.log("ROOTSCOPE!", $rootScope.testData);
            }
            configIntercept = config
            return config
          },
            response: function(response) {
            console.log("RESPONSE!");
            return response;
          },
        };
      }).config(function($httpProvider) {
        return $httpProvider.interceptors.push('loginInterceptor');
      });
    };
    browser.addMockModule('e2eInterceptors', e2eInterceptors);