我的测试需要获取中继器分配值的 div 计数/编号。我尝试搜索,但我的发现都不起作用。
app.js 中的数组:
var rows = [a,b,c,d,e,f,g];
var items = [1,2,3,4,5,6,7];
HTML:
<div ng-repeat="row in rows">
<div ng-repeat = "item in items">
<span>{{item}}</span>
</div>
</div>
问题:我想获取跨度元素值为 4 或任意值的项目的 div 编号。如何用这个在 Protractor 测试中编写这个。
我使用的是下面的内容,但如果该值移动到下一行中的其他 div 将不起作用:
var getnumber = element(by.css=".items").get(4)
想要的是:
var getnumber = element(by.css=".rows").get("SOMETHING 1,2,3 or 4")
最佳答案
如果你想要一个号码 - 使用 map()
:
element.all(by.repeater("item in items")).map(function (elm, index) {
return {
value: elm.element(by.tagName("span")).getText(),
index: index
}
}).then(function (items) {
for (var i=0; i < items.length; i++) {
if (items[i].value === '4') {
console.log(items[i].index);
}
}
});
当 span
文本为 4
时,这将打印转发器中元素的索引。
如果您想过滤 span
文本等于 4
的所有转发器,请使用 filter()
:
element.all(by.repeater("item in items")).filter(function (elm) {
return elm.element(by.tagName("span")).getText().then(function (text) {
return text === "4";
});
});
关于javascript - 如何在元素中包含的 Protractor 测试中获取div编号/计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30176149/