2017-06-23 4 views
0

私はおそらくこれを非常に悪いと言いましたが、私は<ul>クラスを持っていて、要素内に複数の<li>があります。最初の5つの<li>のエントリを印刷したいと思います。私は.get(1)などを使用して個々のエントリを印刷することができますが、私は一緒に.get(1)``.get(2)``.get(3)を使用する方法やそれが可能であるかどうかはわかりません。 これがあります。これは、HTML分度器:複数の.get()を同時に使用できますか?

<ul class="deposit"> 
 
\t \t <li>52,694.85</li> 
 
     <li>21,779.65</li> 
 
     <li>12,086.61</li> 
 
     <li>358,314.56</li> 
 
     <li>47,801.12</li> 
 
     <!--anchor--> 
 
</ul>
ある

checkFigures (figures) { 
 
browser.sleep(8000); 
 
    var checkBalance = element.all(by.css('ul.legend-numbers> li')).get(1); 
 
\t checkBalance.getText().then(function (text) { 
 
     console.log(text); 
 
    //prints 2nd <li> item 
 
}); 
 
}

私のページオブジェクトファイルで、私はそれに近づく方法を任意のヘルプ

答えて

1

あなたはElementArrayFinderに().each呼び出すことができます。 filter()またはmap()を使用すると、探している要素を取得できます。 protractor element.ts

$('ul.deposit').$$('li') //get parent ul then all child li 
      .filter((elements, index) => { //filter out the first 5 elements 
       return index < 5 
      }) 
      .each((element, index) => { //for each of the 5 elements do the following. (order is not guaranteed) 
       return element.getText().then((text) => { 
        console.info(index + " - " + text) 
       }) 
      }); 
+0

実際には最初の5つの要素を合計した醜い方法を使って作業しましたが、あなたのメソッドははるかにクリーンです。私の質問は、「テキスト」をどのように集計するかということです。私は要素を数値形式で表示するために 'console.log(index +" - "text.toString()。replace(/ \ D/g、 ''))'を使っていますが、 5つの要素の合計。私は現在、別の方法でこれを行うことができますが、それはあなたが[.map()](https://github.com/)インデックスを必要とするかどうかによって、filter()とmap()を使用するよりもはるかに面倒です – Edmond

+0

角度/分度器/ blob /マスター/ lib/element.ts#L653)または。 [reduce()](https://github.com/angular/protractor/blob/master/lib/element.ts#L707)これについては、 – Barteld

0

のおかげでありますCSSセレクタ ":lt"(より小さい)そのca n jQueryで使用する。

$("ul.deposit li:lt(5)").size(); //5 

あなたはそれを使用できますか?

$("ul.deposit li:lt(5)").each(
    function(i){ 
     console.info(i + " - " + $(this).text()); 
}); 
+0

返事のおかげで、私はオーレリアを使用していますし、それが分度器と少し厄介なことができ、それは 'ul.deposit李を認識しません:LT(5)'私は "というメッセージを取得します無効または不正なセレクタが指定されました " – Edmond

0
var combined = ''; 
function combineText(a){ 
    combined = (combined.concat(' ')).concat(a); 
} 
var checkBalance = element.all(by.css('ul.legend-numbers> li')); 
for(var i = 0; i < 5; i++){ 
    combineText(checkBalance[i].getText()); 
} 
browser.driver.sleep(0).then(function() { 
    console.log(combined); 
}); 
+0

上記のコードを実行すると"ループ内で関数を作成しない "という警告が表示されます。ありがとうございます。 – Edmond

+0

この' a.getText()。then(function (テキスト){'結果は次のエラーになります:失敗:未定義のプロパティ 'getText'を読み取ることができません 私はエラーを解決できるかどうかを確認しようとしましたが、何をすべきかわかりませんでした – Edmond

+0

今何についてですか? – bdf7kt

関連する問題