2017-10-06 15 views
1

同じxpathを持つ複数のString要素があります。私はList<WebElement>メカニズムを使ってページオブジェクトモデルにストア要素を持っています。私のテストケースでは、リストの最後の文字列値を出力したい。セレンのリスト配列の最後の文字列値を印刷するには?

以下は、リポジトリに格納された要素のコードです。

public Collection<WebElement> UpdatedMessageList(){ 
    Collection<WebElement> element=driver.findElements(By.xpath("//p[@class='msg-paragraph-panel msg-paragraph-msg ng-binding']")); 
    return element; 
} 

私のテストケースから最後の文字列値を印刷するのに役立つ人はいますか?

答えて

0

Java 9を使用していて何かが変更されているかどうかはわかりませんが、上記のコードではコンパイルエラーが発生する可能性があります。また

、あなたが位置get(int)を使用することができますので、Collectionただの古いではない、Listを返し、findElements戻りList of WebElements

public WebElement UpdatedMessageList(){ 
    List<WebElement> element = driver.findElements(By.xpath("//p[@class='msg-paragraph-panel msg-paragraph-msg ng-binding']")); 
    return element.get(element.size()-1); 
} 
+0

リストゼロベースのインデックスを使用します。 – Mureinik

1

findElementsをgenerticコレクションクラスを使用しないでください:

public WebElement UpdatedMessageList(){ 
    List<WebElement> elements = 
     driver.findElements(By.xpath(
      "//p[@class='msg-paragraph-panel msg-paragraph-msg ng-binding']")); 
    if (elements.isEmpty()) { 
     return null; // Or throw some meaningful exception 
    } 
    return elements.get(elements.size() - 1); 
} 
+0

私は要素がnullになることはないと思うので、空であるかどうかをチェックするだけで十分です。 –

+0

@GaurangShah [javadoc](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/WebDriver.html#findElements-org.openqa.selenium.By-)をもう一度チェックしました。そしてあなたが正しいです。要素が見つからなければ、空の 'List'が返されます。私はそれに応じて私の答えを編集しました。 – Mureinik

関連する問題