我有一个示例AngularJS网站@ https://gamersweb-js.firebaseapp.com/,其中包含量角器测试用例,该测试用例应该在其中一个页面上按ID查找元素。具有此ID的元素" displayNameInHome'肯定存在(在用户' Home'页面中),但测试用例未能在那里找到它。
要访问该网页,请使用用户的凭据登录&test; test@qa.com' +密码' 123456',它将带您进入用户的主页。以下测试用例无法找到元素" displayNameInHome'在这个页面上,这将是字符串' tester'的id。在欢迎....之后:
beforeEach(function() {
//browser.get('http://localhost:5000/');
browser.get('https://gamersweb-js.firebaseapp.com');
});
it('Testing display name in profile for logged in user:', function() {
element(by.model('loginUI.email')).clear().sendKeys('tester@qa.com');
element(by.model('loginUI.password')).clear().sendKeys('123456');
element(by.id('loginBtn')).click();
return browser.wait(function() {
var displayNameInHome = element(by.id('displayNameInHome'));
return displayNameInHome.getText().then(function(text) {
return text =="tester";
});
}, 10000);
});
我无法弄清楚为什么元素' displayNameInHome'测试用例未找到。任何帮助将不胜感激。
谢谢。
答案 0 :(得分:2)
browser.wait()
的第一个参数实际上是一个等待的条件。所以你的测试很快就会退出,因为第一个参数不是条件。
此外,您的测试缺少expect
s。
我更改了代码,以便测试等待10秒,#displayNameInHome
元素出现,然后执行断言。
it('Testing display name in profile for logged in user:', function() {
element(by.model('loginUI.email')).clear().sendKeys('tester@qa.com');
element(by.model('loginUI.password')).clear().sendKeys('123456');
element(by.id('loginBtn')).click();
var displayNameInHome = element(by.id('displayNameInHome'));
browser.wait(function() {
return browser.isElementPresent(displayNameInHome)
}, 10000);
expect(displayNameInHome.getText()).toEqual('tester');
});