Javascript 如何将外部库附加到量角器配置文件?
这是图书馆:Javascript 如何将外部库附加到量角器配置文件?,javascript,angularjs,node.js,protractor,automated-tests,Javascript,Angularjs,Node.js,Protractor,Automated Tests,这是图书馆: //library.js var exports = module.exports = {}; exports.login = function(user_login, user_password) { var input; input = element(by.model('loginInfo.login')); input.sendKeys(user_login); expect(input.getAttribute('val
//library.js
var exports = module.exports = {};
exports.login = function(user_login, user_password) {
var input;
input = element(by.model('loginInfo.login'));
input.sendKeys(user_login);
expect(input.getAttribute('value')).toBe(user_login);
input = element(by.model('loginInfo.password'));
input.sendKeys(user_password);
expect(input.getAttribute('value')).toBe(user_password);
browser.sleep(1000);
browser.driver.actions().sendKeys(protractor.Key.ENTER).perform();
browser.sleep(1000);
};
这是我的配置文件:
//config.js
var lib = require("./library.js");
exports.config = {
directConnect: true,
onPrepare: function() {
browser.driver.manage().window().maximize();
},
// Capabilities to be passed to the webdriver instance.
capabilities: {
'browserName': 'chrome'
},
// Framework to use. Jasmine is recommended.
framework: 'jasmine',
// Spec patterns are relative to the current working directory when
// protractor is called.
specs: ['messages.js'],
// Options to be passed to Jasmine.
jasmineNodeOpts: {
defaultTimeoutInterval: 50000
}
};
下面是我如何调用messages.js文件中的登录名fn:
lib.login('xxx', 'yyyyy');
但是,上面的最后一行给了我一个错误:“lib未定义”看起来您正在尝试从library.js文件运行量角器测试 与其这样做,不如遵循指导原则。也就是说,config.js文件用于配置环境,spec.js文件用于测试。因此,请尝试以下方法:
/*
* library-spec.js
*/
var input;
describe('Login Test', function() {
it('should enter login information and send the Enter key to login', function() {
input = element(by.model('loginInfo.login'));
input.sendKeys(user_login);
expect(input.getAttribute('value')).toBe(user_login);
input = element(by.model('loginInfo.password'));
input.sendKeys(user_password);
expect(input.getAttribute('value')).toBe(user_password);
browser.sleep(1000);
browser.driver.actions().sendKeys(protractor.Key.ENTER).perform();
browser.sleep(1000);
});
});
配置文件如下所示:
//config.js
exports.config = {
directConnect: true,
onPrepare: function() {
browser.driver.manage().window().maximize();
},
// Capabilities to be passed to the webdriver instance.
capabilities: {
'browserName': 'chrome'
},
// Framework to use. Jasmine is recommended.
framework: 'jasmine',
// Spec patterns are relative to the current working directory when
// protractor is called.
specs: ['library-spec.js'],
// Options to be passed to Jasmine.
jasmineNodeOpts: {
defaultTimeoutInterval: 50000
}
};
但是,如果需要在每次测试之前或所有测试之前运行library.js文件,请将其放入messages.js
文件中
从messages.js
文件中,在description
块中添加:
beforeEach(function() {
lib(username, password); //where username and password are string vars
});
或
最后,请注意,如果您保持library.js文件不变,下面是一些清理:
//library.js
module.exports = login;
function login(user_login, user_password) {
var input;
input = element(by.model('loginInfo.login'));
input.sendKeys(user_login);
expect(input.getAttribute('value')).toBe(user_login);
input = element(by.model('loginInfo.password'));
input.sendKeys(user_password);
expect(input.getAttribute('value')).toBe(user_password);
browser.sleep(1000);
browser.driver.actions().sendKeys(protractor.Key.ENTER).perform();
browser.sleep(1000);
};
请注意module.exports行如何替换原来的行。我还将exports.login更改为函数login
。那么你会
var login = require('./login');
login('user', 'pass');
需要的地方。不,library.js不是一个测试脚本,它是一个包含常用方法的库,我想用于几个脚本。我想找到一种使用这些方法的方法,但我不知道如何/在哪里调用它们。Conf.js必须调用测试脚本,而不是库。简单地
var-library=require('library')()
然后您可以从库中调用方法作为library.login()
。看看我在周末写的这篇博客文章,它应该会帮助你。我还建议不要将expect
语句放在您的库中,这些语句被期望“做一些事情”。将expect语句留给实际的规范测试。也就是说,有一个spec.js文件专门测试登录。但是让您的登录库expect免费,但假设登录之前已经过测试,只需登录就无需重复测试。
var login = require('./login');
login('user', 'pass');