如何在 ng-repeat 中使用 foreach 和量角器查找元素



我的角度页面中有ng-repeat列表。每个中继器上有五个不同的项目。

我想在所有转发器的列表中搜索一个值,然后从列表中找到匹配的项目。

function(callback){
    browser.sleep(2000);
    element(by.css("h1 > span.ng-binding")).getText().then(function(text) {
        var myid = text.trim();                    
        console.log("****text"+text);
    });
    element(by.id("categories")).click();
    element(by.linkText("kids")).click();
    browser.sleep(6000);
    var Content = element(by.css("[slides="ctrl.requestsHtml"]"));
    var tableRepeater = Content.all(by.repeater("view in ctrl.views track by $index")).each(function(rowElem,index){
        var myRowElem = rowElem;
        rowElem.element(by.tagName("div")).getOuterHtml().then(
            function(success){
                console.log(success);
                //if this repeater row has the myid we are looking for, click the Edit button
                if(success.match(/myid/)!=null){
                    var Edit = rowElem.element(by.linkText("Edit"));
                    Edit.click();
                }
            }
        )
    });
    callback();
}

rowElem.element(...(.getOuterHtml 不是一个函数

getOuterHtml()方法已从 API 中删除 - 请改用getAttribute()

rowElem.element(by.tagName("div")).getAttribute("outerHtml");

我还认为在这种情况下,您实际上需要使用.filter()而不是.each()

var desiredRow = Content.all(by.repeater("view in ctrl.views")).filter(function(rowElem) {
    return rowElem.element(by.tagName("div")).getAttribute("outerHtml").then(function(outerHtml) {
        return outerHtml.match(/myid/) != null;
    });
}).first();
desiredRow.element(by.linkText("Edit")).click();

另请注意我如何从"按中继器"定位器中删除"跟踪"部分 - 不需要它。

最新更新