【问题标题】:for loop in protractor js量角器js中的for循环
【发布时间】:2017-06-27 16:22:51
【问题描述】:

我有一个场景,其中有类名 .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:

任何帮助将不胜感激。

【问题讨论】:

  • 你不能以这种方式使用getText()getText() 需要解析promise,然后应该使用。
  • 另外,如果发生任何错误,请说明。
  • @demouser123 没有任何错误

标签: javascript angularjs protractor angularjs-e2e


【解决方案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
});

【讨论】:

    【解决方案2】:

    请通读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 选择器中使用单个类。请查看更新的代码

    【讨论】:

    • 我没有得到 console.log(i) 输出
    • 请在问题正文中添加相关的HTML。
    • 相同的结果.. products.length 在我控制台时显示未定义。
    猜你喜欢
    • 1970-01-01
    • 2017-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    相关资源
    最近更新 更多