量角器测试AngularJS无法通过确实存在的id找到元素

时间:2017-05-01 01:25:24

标签: angularjs protractor

我有一个示例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'测试用例未找到。任何帮助将不胜感激。

谢谢。

1 个答案:

答案 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');
});