我有一个场景,其中有重复的元素,类名为.product-tile
,我试图通过该类名获取元素并循环遍历每个元素并找到标题为Products
的元素。
如果是这样,我正在尝试点击apt-add-to-cart-button
,但此处代码不会进入for循环。
var products = element.all(by.css('.product-tile'));
for (var i = 0; i < products.length; i++) {
console.log(i);
var product = products.get(0);
if (product.element(by.css('.productName .title')).getText() === 'Products') {
product.element(by.css('apt-add-to-cart-button')).click();
}
}
html:
任何帮助都将不胜感激。
答案 0 :(得分:1)
实际上重复选择器应该被解析为下面的承诺
element.all(by.css('.product-tile.ng-scope')).then(function(items){
console.log(items.length); //will get the length here
// do the stuff here
});
答案 1 :(得分:0)
请阅读this,因为getText()
会返回需要解决的承诺。
你可能需要这样的东西
var products = element.all(by.css('.product-tile.ng-scope'));
for (var i = 0; i <= products.length; i++) {
console.log(i);
var product = products.get(0);
if (product.element(by.css('.productName .title')).getText().then(function(returnText){
if(returnText==='Products'){
product.element(by.css('apt-add-to-cart-button')).click();
}else{
console.log('Something happened');
}
});
}
编辑 - 您的类包含复合类,因此您不能在CSS选择器中使用单个类。请参阅更新的代码