我的HTML结构是这样的:
<li ng-repeat="m in members">
<div class="col-name">{{m.name}}</div>
<div class="col-trash">
<div class="trash-button"></div>
</div>
</li>
我想要做的是使用量角器,当m.name等于特定值时,请单击垃圾箱。
我已经尝试过类似的事情:
element.all(by.repeater('m in members')).count().then(function (number) {
for (var i = 0 ; i < number ; i++) {
var result = element.all(by.repeater('m in members').row(i));
result.get(0).element(by.binding('m.name')).getAttribute('value').then(function (name) {
if (name == 'John') {
result.get(0).element(by.className('trash-button')).click();
};
});
};
});
这似乎应该工作,但是,似乎我的函数甚至没有运行它。
我也已经研究了诺言和过滤器,尽管它们也都没有成功。不断出错。
var array = element.all(by.repeater('m in members'));
array.filter(function (guy) {
guy.getText().then(function (text) {
return text == 'John';
})
}).then(function (selected) {
selected.element(by.className('trash-button')).click()
}
我要做的就是在查找特定成员列表时单击相应的垃圾箱!
任何帮助将非常感激。
编辑:建议我一旦找到正确的元素就使用xpath,这很好,问题是我无法获得过滤器函数的承诺让我使用element(by.xpath ...)
如果我尝试:
var array = element.all(by.repeater('m in members'));
array.filter(function (guy) {
guy.getText().then(function (text) {
return text == 'John';
})
}).then(function (selected) {
selected.element(by.xpath('following-sibling::div/div')).click()
}
我得到了错误:
失败:对象没有方法“元素”
弄清楚了。遵循API参考中的量角器过滤器准则,并使用alecxe的xpath建议,此代码将在过滤后单击您发现的任何元素。
element.all(by.className('col-name')).filter(function (member, index) {
return member.getText().then(function (text) {
return member === 'John';
});
}).then( function (elements) {
elements[0].element(by.xpath('following-sibling::div/div/')).click();
});
您可以更改xpath以选择其他内容,以防您的HTML看起来不像我的HTML。
看起来您可以避免使用中继器进行搜索,而是by.binding
直接使用。找到感兴趣的值后,获取以下同级符号并单击它:
element.all(by.binding('m.name')).then(function(elements) {
elements.filter(function(guy) {
guy.getText().then(function (text) {
return text == 'John';
})
}).then(function (m) {
m.element(by.xpath('following-sibling::div/div')).click();
});
});
或者,纯xpath方法可能是:
element(by.xpath('//li/div[@class="col-name" and .="John"]/following-sibling::div/div')).click();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句