使用Protractor / Webdriver窥视AJAX / HTTP调用?有$ HttpBackend返回数据发送给它吗?

时间:2016-01-29 02:27:44

标签: selenium-webdriver webdriver jasmine protractor

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

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

2 个答案:

答案 0 :(得分:1)

听起来这可能就是你所需要的:

NodeJS bindings for browsermob-proxy to programmatically generate HAR files

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

修改

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

答案 1 :(得分:0)

我使用了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);