我试图将我的Protractor测试分解为可管理的文件。 有人可以告诉我,我做错了什么吗?
以下是一个例子:
变量:C:/tests/variables/signInVariables.js
var emailAddress = element(by.model('loginData.userName'));
var password = element(by.model('loginData.password'));
var signInButton = element(by.css('[data-auto-field="SignIn"]'));
功能:C:/tests/functions/signInFunctions.js
var signInVariables = require ('../variables/signInVariables.js');
function signIn(a, b) {
browser.get ('https://www.website.com');
emailAddress.sendKeys(a);
password.sendKeys(b);
signInButton.click();
};
测试:C:/tests/protractor/conf.js
var signInFunctions = require ('../functions/signInFunctions.js');
it(' should sign in ', function() {
signIn("someusername", "somepassword");
});
我跑了,这就是我得到的:
Failed: signIn is not defined
我确定这是一个简单的解决方法。我只是不知道自己在做什么。
答案 0 :(得分:3)
您可以阅读有关require和模块here的更多信息,您的错误就是这样
signInVariables不是模块,没有exports
对象可供使用。
你可以这样做:
exports.emailAddress = element(by.model('loginData.userName'));
exports.password = element(by.model('loginData.password'));
exports.signInButton = element(by.css('[data-auto-field="SignIn"]'));
或将signInVariables定义为模块并将其整体导出。 希望我帮忙。
答案 1 :(得分:2)
require
并没有像你期待的那样工作。它不是简单地按照您使用它的方式内联所需的文件。 require
正在寻找JSON文件或module.exports
对象。这是一个简单的例子。
require_me.js
module.exports = {a: "foo", b: "bar"};
index.js
var imports = require('require_me.js');
console.log(imports); // Will produce {a: "foo", b: "bar"}