2017-09-21 17 views
1

​​コマンドで提供されているコマンドを実装することが可能かどうかは、Nightwatch.jsです。Nightwatch実行コマンド、繰り返し

Nightwatch.jsとすると、テーブル要素に対して、行の数を基準にして何度もアクションを実行したいと考えています。明らかに、私のコードは動作しません、誰もそれを行う方法の良いアイデアを持っていますか?

// here is the execute() command 
.exeute(
    function() { 
    const rows = document.querySelectorAll('table tbody tr'); 
    return rows.length; // suppose we have 3 rows in the table 
    }, 
    [], 
    function(result) { 
    // here I want to perform an action to all the 3 rows, but I 
    // could not find a way to do that, here is my original thought 
    for (let i = 1; i <= result; i++) { 
     client.element('css selector', `table tbody tr:nth-child(${i})`, function() { 
     // Action, do something here 
     }); 
    } 

    } 
) 
.waitForElementPresent('.mainpage', 15000) 

答えて

1

.elementsを使用して、一致する結果のリストを取得し、それを反復処理します。

.elements('css selector', 'td[class=someColumn]', (results) => { 
      for(let i = 0; i < results.value.length; i++){ 
       client.elementIdText(results.value[i].ELEMENT, (element) => { 
         //do whatever you want with the element 
       }) 
      } 
}); 
+1

ありがとうございます。ありがとうございます。私はmap()関数を使用しますが、あなたと同じアイデアです。 –

0

実行によって呼び出される関数ですべてを実行しないのはなぜですか?あなたはexecute呼び出しからの戻り値を得るためにあなたのforループでresult.valueを参照するように更新した場合

// here is the execute() command 
.exeute(
    function() { 
    const rows = document.querySelectorAll('table tbody tr'); 
    for (let i = 0; i < rows.length; i++) { 
     let row = rows[i]; 
     // Action, do something here 
    } 
    } 
) 
.waitForElementPresent('.mainpage', 15000) 

あなたの元のコードが動作する可能性があります。

関連する問題