量角器js

时间:2017-06-27 16:22:52

标签: javascript angularjs protractor angularjs-e2e

我有一个场景,其中有重复的元素,类名为.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:

enter image description here

任何帮助都将不胜感激。

2 个答案:

答案 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选择器中使用单个类。请参阅更新的代码