2016-08-25 6 views
1

WebElementのリストを取得していて、1つの要素だけが表示されています。このメソッドを使用して、その要素を返します。表示されているときにWebElementを返します。

public WebElement getVisibleElement(List<WebElement> elements){ 
    for(WebElement element : elements){ 
     if(element.isDisplayed()) 
      return element; 
    } 
} 

これを達成する他の方法はありますか?

EDIT

は、ここで使用して、それが返す要素のXPathイムです。

enter image description here

+0

なぜあなたはすべての要素のリストを取得し、目に見える要素を見つけるの代わりにする反復されています目に見える要素だけを得ること?? –

+0

私はxpathを使って要素を取得しています。同じスタイルと属性を持つ複数の要素を返しますが、1つだけが表示されます。 – DCruz22

+0

次に、一意のロケータを使用して、ロケータ内のインデックスを渡すことで可視の要素を1つだけ見つける必要があります。要素HTMLを共有できるかどうか、より良いソリューションを提供できる理由は何ですか: –

答えて

0

あなたは以下のようにインデックスを持つユニークなxpathロケータを使用して、ここでfindElement代わりfindElementsのを使用することができます -

//Assuming first element from list is visible 
String indexOfVisbleElement = "1"; 
String xpath = "(.//table//td[@class = 'button' and b = 'Refresh'])[" +indexOfVisbleElement+ "]"; 

//Now find only visible element 
WebElement visibleEl = driver.findElement(By.xpath(xpath)); 
+0

これは良い方法ですが、再利用できる方法が欲しいですか?インデックスは変更可能です。 – DCruz22

+0

あなたがよくわからないのなら、あなたはどのバージョンのJavaを使っているのですか? –

+0

私はJava 7とjdk 1.7.0を使っています – DCruz22

関連する問題