从量角器中继器打印文本

时间:2013-11-14 19:13:15

标签: angularjs-ng-repeat protractor

我有以下e2e测试可以正常工作:

            var results = ptor.findElements(protractor.By.
                     repeater('phone in phones').column('phone.name'));
            results.then(function(arr) {
             expect(arr.length).toEqual(2);
        });

而不是计数/长度,我希望有一个检查文本结果的测试,如:

expect(repeater('.phones li', 'Phone List').column('phone.name')).
      toEqual(["Motorola XOOM\u2122 with Wi-Fi",
               "MOTOROLA XOOM\u2122"]);

但是使用Protractor语法,我尝试了以下但没有去:

var results = ptor.findElements(protractor.By.
                 repeater('phone in phones').column('phone.name'));
        results.then(function(arr) {
         expect(arr.getText()).toEqual(....);
    });

但我得到一个no方法getText()错误。 在“arr”数组中获取文本的方法是什么?

这有效:

            ptor.findElements(protractor.By.repeater('phone in phones').column('phone.name'))
            .then(function(arr) {
                arr[0].getText().then(function(text) {
                    console.log("*** first: "+text);

                });
                arr[1].getText().then(function(text) {
                    console.log("*** second: "+text);

                    done();
                })
            });

1 个答案:

答案 0 :(得分:1)

问题在于你的方法链接方式。元素查找只是将WebElement带回来。你真正追求的是getText()返回的promise对象。如果您希望在承诺解决后对文本执行某些操作,则需要将“then”调用链接到getText()调用的末尾。所以而不是:

results.then(function(arr) {
     expect(arr.getText()).toEqual(....);
});

你真的想要这样的东西:

results.getText().then(function(resultText) {
     expect(resultText).toEqual(....);
})