我有以下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();
})
});
答案 0 :(得分:1)
问题在于你的方法链接方式。元素查找只是将WebElement带回来。你真正追求的是getText()返回的promise对象。如果您希望在承诺解决后对文本执行某些操作,则需要将“then”调用链接到getText()调用的末尾。所以而不是:
results.then(function(arr) {
expect(arr.getText()).toEqual(....);
});
你真的想要这样的东西:
results.getText().then(function(resultText) {
expect(resultText).toEqual(....);
})