我的角度页面中有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();
另请注意我如何从"按中继器"定位器中删除"跟踪"部分 - 不需要它。