我有以下登录功能,可以安装"成功"成功和"失败"对于文件。
function login() {
return new Promise(function (resolve, reject) {
var username = element(by.name('txtLogin'));
var password = element(by.id('txtPassword'));
var signInButton = element(by.id('btnSignIn'));
for (var i = 0; i < testData.length; i++) {
if (testData[i].env === appConfig) {
username.sendKeys(testData[i].user);
password.sendKeys(testData[i].pass);
signInButton.click();
console.log("Successfully Clicked on the Sign In Button!");
break;
}
}
browser.getTitle().then(function (title) {
if (title == "Page Title") {
resolve("Successfull");
} else {
reject("Failed");
}
});
});
};
以下测试
describe('Login Scenarios', function () {
beforeEach(function () {
login();
});
it('Valid Credentials, Should login successfully from util class', function () {
console.log('Successfully logged in!');
});
});
我在这里看到非常奇怪的行为。即使在页面完全加载之前,此行也会执行并控制输出。
console.log("Successfully Clicked on the Sign In Button!");
以下代码永远不会执行。
browser.getTitle().then(function (title) {
if (title == "Page Title") {
resolve("Successfull");
} else {
reject("Failed");
}
});
最后我看到以下错误。
failed: error while waiting for protractor to sync with the page: "cannot re ad property '$$testability' of undefined"
我很确定,我在这里弄乱了些什么。但无法弄清楚这里做了什么错。
答案 0 :(得分:2)
login
返回一个承诺,但你没有向Jasmine / Protractor发出信号,要求它等待它完成。您可以使用done
回调:
beforeEach(function (done) {
login().then(function () {
done();
});
});
有关详细信息,请参阅Jasmine documentation(似乎已经无法隐藏在新网站布局中......)。