Javascript 量角器HTTP GET请求
在我的量角器测试中,我试图命中一个端点,该端点将重置当前登录用户的所有数据。现在,我正在使用普通的老javascript在Javascript 量角器HTTP GET请求,javascript,angularjs,protractor,Javascript,Angularjs,Protractor,在我的量角器测试中,我试图命中一个端点,该端点将重置当前登录用户的所有数据。现在,我正在使用普通的老javascript在之前的中命中该端点,并且它成功地命中了它,但是现在我的测试在页面刷新之前执行,导致它们失败。以下是我当前的代码: var EC = protractor.ExpectedConditions, el = element(by.css('body div.modal-x')); browser.executeAsyncScript(function() { v
之前的中命中该端点,并且它成功地命中了它,但是现在我的测试在页面刷新之前执行,导致它们失败。以下是我当前的代码:
var EC = protractor.ExpectedConditions,
el = element(by.css('body div.modal-x'));
browser.executeAsyncScript(function() {
var inj = angular.element(document.body).injector();
var reHTTP = inj.get('reHTTP');
var myService = inj.get('myService');
var someVar = myService.getCurrent().definition.userName;
console.log(someVar); // works
reHTTP.get('/app/' + someVar + '/reset').then(function () {
// console.log('i am here'); // this works
// alert('Success!'); // this works
return browser.wait(EC.visibilityOf(el)); // this does not work
});
});
问题:我无法在该executeScript块中使用量角器函数,因为我现在处于浏览器上下文中。i、 e.EC
未定义
问题:我如何正确访问/使用我的ExpectedConditions
,同时也访问此端点(同样,我目前在之前的块中使用此函数)
需要注意的几点:
- 如果我不使用
browser.executeAsyncScript
则angular
未定义,我无法访问服务(或者我找不到其他方法)
- 使用
executeScript
(而不是异步脚本)失败的速度甚至比异步脚本更快
有什么想法吗?我们在每次之前和之后的中使用rest调用。使用browser.ignoreSynchronization=true
在beforeAll
函数开始时中断角度同步,然后在脚本之后,确保重置browser.ignoreSynchronization=false代码>
例如:
beforeEach(function() {
browser.ignoreSynchronization = true;
browser.executeAsyncScript();
browser.ignoreSynchronization = false;
});
方法executeAsyncScript
期望调用回调函数。一旦请求返回结果,您就可以调用它:
var EC = protractor.ExpectedConditions,
el = element(by.css('body div.modal-x'));
browser.executeAsyncScript(function(callback) {
var inj = angular.element(document.body).injector();
var reHTTP = inj.get('reHTTP');
var myService = inj.get('myService');
var someVar = myService.getCurrent().definition.userName;
console.log(someVar); // works
reHTTP.get('/app/' + someVar + '/reset').then(function () {
callback();
});
});
browser.wait(EC.visibilityOf(el));
哇,谢谢你!这很简单,但出于某种原因,我把自己和回调混淆了。在发布问题之前我已经试过了,但我一定没有正确地实施它。。。如果reHTTP
需要自己的回调来调用高阶回调,我可能会感到困惑。再次感谢。