angularjs – 量角器测试角$http拦截器
发布时间:2020-12-17 16:57:48 所属栏目:安全 来源:网络整理
导读:我正在尝试进行角度量角器测试,在提交时发送一个常规的ajax请求,然后在响应段上截获. $http拦截器打开一个自定义对话框,等待用户输入(用户/密码)以进行进一步的身份验证. 问题是量角器坐在那里等待HTTP响应完成但从未这样做,因为它已被截获并且只是超时.我无
我正在尝试进行角度量角器测试,在提交时发送一个常规的ajax请求,然后在响应段上截获. $http拦截器打开一个自定义对话框,等待用户输入(用户/密码)以进行进一步的身份验证.
问题是量角器坐在那里等待HTTP响应完成但从未这样做,因为它已被截获并且只是超时.我无法找到一种方法将量角器sendKeys发送到这些对话框,因为它仍在等待HTTP请求完成(它从未被截获). 从本质上讲,量角器框架可以处理$http截获的响应并在需要时提供额外的浏览器输入吗?或者有任何变通方法吗? 谢谢!! 解决方法
您可以通过将此脚本注入浏览器来拦截应用程序中的所有xhr调用.并存储对某些全局变量的响应,例如,我保存在
windows变量中.
(function(XHR) { "use strict"; var open = XHR.prototype.open; var send = XHR.prototype.send; XHR.prototype.open = function(method,url,async,user,pass) { this._url = url; open.call(this,method,pass); }; XHR.prototype.send = function(data) { var self = this; var oldOnReadyStateChange; var url = this._url; function onReadyStateChange() { if(self.readyState == 4 /* complete */) { /* This is where you can put code that you want to execute post-complete*/ /* URL is kept in this._url */ if(self._url=='api/v1/groups') { var request=JSON.parse(data); if(request.method=='createGroup') { var XHRInterceptObj=new Object(); XHRInterceptObj.request=request; XHRInterceptObj.response=self; window._groupCreation =XHRInterceptObj; } else if(request.method=='getGroupDetails') { var XHRInterceptObj=new Object(); XHRInterceptObj.request=request; XHRInterceptObj.response=self; window._groupDetails =XHRInterceptObj; } } } if(oldOnReadyStateChange) { oldOnReadyStateChange(); } } /* Set xhr.noIntercept to true to disable the interceptor for a particular call */ if(!this.noIntercept) { if(this.addEventListener) { this.addEventListener("readystatechange",onReadyStateChange,false); } else { oldOnReadyStateChange = this.onreadystatechange; this.onreadystatechange = onReadyStateChange; } } //console.log('data',data); send.call(this,data); } })(XMLHttpRequest); 你可以从这样的全局变量中获取响应数据. browser.executeScript('return window._groupCreation;').then(function(obj){ console.log(obj.responseText); }); 在这个脚本中,我们实际上是使用原型和拦截调用向XHR对象添加其他功能. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- tensorflow 升级到1.9-rc0,tensorboard 报错:TypeError: G
- bash – Shell脚本中的关联数组
- 如何在vim中替换?(波浪号)
- WebService大讲堂之Axis2(9):编写Axis2模块(Module)
- 8 个必看的 Bootstrap 的 WordPress 框架
- 使用Angular2,如何在登录重定向之前重定向到以前的url
- twitter-bootstrap – 使用Require.js从CDN加载Bootstrap
- bootstrap之WaitForIdle&&Clear
- 在bash脚本中建议用户输入的回答
- angularjs – 什么是最好的方法来取消嵌套ng单击调用之间的