javascript - 如何在元素中包含的 Protractor 测试中获取div编号/计数

标签 javascript testing selenium protractor end-to-end

我的测试需要获取中继器分配值的 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/

相关文章:

javascript - 当另一个元素滚动到时尝试将 addClass 添加到一个元素

javascript - 移动设备上 <a> 标签上的 jQuery 悬停事件

java - 如何使用 .HAR 文件生成 HTML UI(Firebug 显示)

python - 模拟 raw_input python

java - 尽管预期和实际相似,但 junit 中的 ArrayList 相等不起作用

ruby - 如何在 RSPEC 中测试类方法

java - moveToElement() 执行悬停操作

javascript - 放大 - 缩小不能正常工作

c# - 使用selenium时可以更改数据库吗?

selenium - Windows 10 - chromedriver.exe 返回我只允许本地连接