【问题标题】:How to get div number/count in protractor test contained in element如何在元素中包含的量角器测试中获取 div 编号/计数
【发布时间】:2015-07-22 10:59:28
【问题描述】:

我的测试需要将 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>

问题:我想获取值 span 元素为 4 或任何值的项目的 div 编号。如何用这个在量角器测试中写这个。

我使用的是下面,但如果值移动到下一行的其他 div 将不起作用:

var getnumber = element(by.css=".items").get(4)

想要的是:

var getnumber = element(by.css=".rows").get("SOMETHING 1,2,3 or 4")

【问题讨论】:

    标签: javascript testing selenium protractor end-to-end


    【解决方案1】:

    如果你想要一个号码 - 使用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";
       });
    });
    

    【讨论】:

    • 太棒了。非常感谢。我使用了第二个选项(过滤器)并且像一个魅力一样工作。干杯。
    • @EdiWacs 太棒了!考虑使答案被接受。谢谢!
    猜你喜欢
    • 2014-03-27
    • 2015-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-08
    • 1970-01-01
    • 2017-04-16
    • 1970-01-01
    相关资源
    最近更新 更多