我为以下html创建了一个量角器测试:
<div class="well well-sm" data-ng-repeat="feedback in f.feedbackList">
Rating: {{feedback.rating}}
<blockquote class="small">{{feedback.comment}}</blockquote>
</div>
在page.js文件中我有:
"use strict";
module.exports = (function () {
function AdminFeedbackPage() {
this.comments = element.all(by.repeater('feedback in f.feedbackList').column('feedback.comment')).map(function (comments) {
return comments.getText();
});
this.ratings = element.all(by.repeater('feedback in f.feedbackList').column('feedback.rating')).map(function (ratings) {
return ratings.getText();
});
}
return AdminFeedbackPage; })();
然后在我的step.js文件中进行测试:
var feedbackFound = false;
var feedbackIndex;
adminFeedbackPage.comments.then(function (commments) {
for (var i = 0; i < commments.length; i++) {
console.log("Comments " + i + ": " + commments[i]);
if (commments[i] == "TestApplicationFeedback") {
feedbackIndex = i;
console.log("FEEDBACK INDEX - " + feedbackIndex)
feedbackFound = true;
break;
}
}
}).then(function () {
expect(feedbackFound).to.be.true;
}).then(function() {
adminFeedbackPage.ratings.then(function (ratings) {
console.log(ratings);
console.log("RATINGS length " + ratings.length + " and rating is " + ratings[feedbackIndex]);
expect(ratings[feedbackIndex]).to.equal(3);
})
});
我得到以下日志:
评论0:体面的应用
评论1:真的很喜欢
评论2:TestApplicationFeedback
FEEDBACK INDEX - 2
[]
RATINGS长度为0且评级未定义
AssertionError:预期未定义为等于3
这真让我感到困惑,因为评论没有任何问题,但评级只是一个空数组,据我所知,我已经为两者做了同样的事情。
是否有人有任何建议/理由为什么没有找到评级?我怀疑它与page.js文件中的内容有关,但我不知道可能出现什么问题?
谢谢!
答案 0 :(得分:1)
在上面的评论中解决了这个问题,发布了答案:
这只是一个基于HTML的猜测/建议,一个是子元素,另一个直接在转发器内(这个没有被捕获)。所以我的建议是尝试使用.evaluate()
source,它就像在给定元素的范围内一样。因此,替换.column()
似乎有效:
element.all(by.repeater('feedback in f.feedbackList')).evaluate('feedback.rating').then(function(val) {
console.log(val) // should return an array of values (feedback.rating)
})