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