Javascript 带量角器的异步请求函数 节点版本:v6.10.3 量角器版本:5.1.2版 浏览器:IE 操作系统和版本:Windows 10 描述:我正在使用量角器测试角度页面。但是,在测试期间,我还需要使用POST(API REST)验证请求。但是,我需要获取令牌ID,以便稍后使用令牌身份验证发送get

Javascript 带量角器的异步请求函数 节点版本:v6.10.3 量角器版本:5.1.2版 浏览器:IE 操作系统和版本:Windows 10 描述:我正在使用量角器测试角度页面。但是,在测试期间,我还需要使用POST(API REST)验证请求。但是,我需要获取令牌ID,以便稍后使用令牌身份验证发送get,javascript,async-await,protractor,Javascript,Async Await,Protractor,因此,我有以下代码: progrator.conf.js vmiRest.js: restSecurityApi.js: 在执行过程中,当测试结束时,请求函数返回结果/响应LATE(异步)!那么,如何执行请求同步或遵守执行顺序 我用过承诺,等待,但什么都不管用!求你了,我需要帮助!多谢各位 新增:我还进行了以下测试: vmiRest.js: restSecurityApi.js: 即便如此,同样的问题 你不需要使测试异步吗?我不需要。但是@Bergi,我在没有回调的情况下尝试了,但是我做不到。我

因此,我有以下代码:

progrator.conf.js

vmiRest.js:

restSecurityApi.js:

在执行过程中,当测试结束时,请求函数返回结果/响应LATE(异步)!那么,如何执行请求同步或遵守执行顺序

我用过承诺,等待,但什么都不管用!求你了,我需要帮助!多谢各位

新增:我还进行了以下测试:

vmiRest.js:

restSecurityApi.js:


即便如此,同样的问题

你不需要使测试异步吗?我不需要。但是@Bergi,我在没有回调的情况下尝试了,但是我做不到。我的意思是你应该在
it
测试中尝试回调。为什么不使用而不是请求呢?这将使你的生活更容易解决!我使用了同步请求!非常感谢@wswebcreation和Bergi。
exports.config = {
  framework: 'mocha',
  frameworkPath: require.resolve('serenity-js'),
  seleniumAddress: 'http://localhost:4444/wd/hub',
  specs: ['vmiRest.js'],
  capabilities: {
    browserName: 'internet explorer',
    chromeOptions : {
      args : ["incognito"],
      prefs: {"profile.managed_default_content_settings.images": 2}
    }
  },
  mochaOpts: {
    reporter: "spec",
    slow: 12000,
    timeout: 20000,
    ui: 'bdd'
  },
  serenity: {
    dialect: 'mocha'
  }
}
var chai = require('chai');
var chaiAsPromised = require('chai-as-promised');
var assert = chai.assert;
var expect = chai.expect;
chai.use(chaiAsPromised);
var SecurityApi = require(__dirname + '/common/restSecurityApi.js');
var Parts = require(__dirname + '/common/restParts.js');
describe('VMI - API', function() {
  var tokenId = 'none';
  var username = 'bla';
  var password = '*';
  var dealer = '112571';
  var part = '0420665R1';
beforeEach(function () {
    //
  });
it('Get Token from SecurityApi', function() {
    //
    var restSecurityApi= new SecurityApi(username, password);
    restSecurityApi.getToken(function (tokenId) {
      assert.notEqual(tokenId, null);
      console.log(tokenId);
    });
  });
  it('Test Interface getStockFullUsingGET', function() {
    console.log(tokenId);
  });
});
var request = require('request');
var SecurityApi = function (username, password) {
  this.getToken = function (callback) {
    var headers = {
      'X-OpenAM-Username': username,
      'X-OpenAM-Password': password,
      'Content-Type': 'application/json'
    }
    // Configure the request
    var options = {
        url: 'https://appsqa.host/SecurityApi/Token',
        method: 'POST',
        headers: headers
    }
    // Start the request
    request(options, function (error, response, body) {
        if (!error && response.statusCode == 200) {
            var json = JSON.parse(body);
            var tokenId = json["tokenId"];
            callback(tokenId);
        }  else {
            callback(null);
        }
    })
  };
};
module.exports = SecurityApi;
var chai = require('chai');
var chaiAsPromised = require('chai-as-promised');
var assert = chai.assert;
var expect = chai.expect;
chai.use(chaiAsPromised);
var SecurityApi = require(__dirname + '/common/restSecurityApi.js');
var Parts = require(__dirname + '/common/restParts.js');
describe('AGCOnline - VMI - API', function() {
  browser.ignoreSynchronization = true;
  browser.waitForAngularEnabled(false);
  var tokenId = 'none';
  var username = 'user';
  var password = '*';
  var dealer = '11571';
  var part = '040665R1';
  it('Get Token from SecurityApi', function() {
    tokenId = SecurityApi.getToken(username, password);
    console.log(tokenId);
  });
  it('Test Interface getStockFullUsingGET (BKW11)', function() {
    console.log(tokenId);
  });
});
var request = require('request');
exports.getToken = function (username, password) {
  var headers = {
    'X-OpenAM-Username': username,
    'X-OpenAM-Password': password,
    'Content-Type': 'application/json'
  }
  // Configure the request
  var options = {
    url: 'https://appsqa.agcoonline.com.br/SecurityApi/Token',
    method: 'POST',
    headers: headers
  }
  // Start the request
  request(options, function (error, response, body) {
    if (!error && response.statusCode == 200) {
      var json = JSON.parse(body);
      var tokenId = json["tokenId"];
        console.log(tokenId);
        return tokenId;
      }
    else {
      return null;
    }
  })
};