Javascript 量角器HTTP GET请求

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

在我的量角器测试中,我试图命中一个端点,该端点将重置当前登录用户的所有数据。现在,我正在使用普通的老javascript在
之前的
中命中该端点,并且它成功地命中了它,但是现在我的测试在页面刷新之前执行,导致它们失败。以下是我当前的代码:

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
需要自己的回调来调用高阶回调,我可能会感到困惑。再次感谢。