0

我有以下工作正常的 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"]);

但使用量角器语法,我尝试了以下但没有去:

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

但我得到一个 no method 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();
                })
            });
4

1 回答 1

1

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

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

你实际上想要这样的东西:

results.getText().then(function(resultText) {
     expect(resultText).toEqual(....);
})
于 2013-11-14T20:05:06.990 回答