这是图书馆:
//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未定义”
答案 0 :(得分:1)
看起来你正试图从你的library.js文件中运行一个量角器测试。
请遵循http://www.protractortest.org/#/指示的准则,而不是这样做。也就是说,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
文件中,在describe
块中添加:
beforeEach(function() {
lib(username, password); //where username and password are string vars
});
或
beforeAll(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更改为function login
。然后你会...
var login = require('./login');
login('user', 'pass');
需要的地方。