javascript - Protractor HTTP GET 请求

标签 javascript angularjs protractor

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

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 block 中使用 Protractor 函数,因为我现在处于浏览器上下文中。即 EC 未定义

问题:我如何才能正确访问/使用我的ExpectedConditions 同时也达到这个端点(同样,我目前正在 beforeAll block )?

一些注意事项:

  • 如果我不使用 browser.executeAsyncScript 那么 angular 是未定义的,我无法访问服务(或者我找不到其他方法)<
  • 使用 executeScript(而不是 AsyncScript)比异步脚本失败得更快

有什么想法吗?

最佳答案

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));

关于javascript - Protractor HTTP GET 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37349456/

相关文章:

javascript - ajax调用中的安全问题

javascript - 使用 JavaScript 和 HTML5 canvas 绘制线性函数

javascript - ng-if 花费 500 个观察者 - 性能

javascript - 如何正确地对 Angular 指令进行单元测试

angularjs - Protractor 使用 element.all 检查元素是否存在于 LIST 上

javascript - JavaScript 中的 Promise 问题

javascript - Express 和 SSL 使用

javascript - 如何在本地存储并静态提供 angularjs 库?

typescript - 如何在 browser.wait 超时时执行其他代码?

sockets - Angular2 e2e测试用例,带有 Protractor 抛出错误