2017-07-03 6 views
-1

XPathの助けを借りて各グループの最初の要素を抽出するにはどうすればよいですか?私は、例えば、このような状況から、「最初の」クラスを持つ要素のリストを取得する意味:xpathの助けを借りて各グループの最初のhtmlタグを抽出するには?

<div class="parent"> 
     <table class="first"> ... </table> 
     <table> ... </table> 
     <table> ... </table> 
     <p> ... </p> 
     <div> ... </div> 
     <table class="first"> ... </table> 
     <table> ... </table> 
     <p> ... </p> 
     <p> ... </p> 
     <table class="first"> ... </table> 
    </div> 

注:クラス「最初」単に例示のためのものです。私のコードではクラスが存在しないので、CSSやXPathクラス検索の助けを借りて選択することはできません。

+0

あなたのHTML/XML – kism3t

答えて

0

親のすべての子を見つけて<div>に戻し、それらを反復処理することができます。他のタグの後にタグ名が<table>の場合は、リストに追加します。

List<WebElement> items = driver.findElements(By.cssSelector(".parent > ")); 
List<WebElement> firstElements = new ArrayList<>(WebElement); 

boolean lookForFirst = true; 
for (WebElement item : items) { 
    if (item.getTagName().equals("table")) { 
     if (lookForFirst) { 
      firstElements.add(item); 
      lookForFirst = false; 
     } 
    } 
    else { 
     lookForFirst = true; 
    } 
} 
+1

内には実際のパターンが存在しないように私はあなたの方法は完璧に動作し、ありがとう、単一のXPathで 'table'タグを取得する方法はありません推測 –

1

(/div[@class=parent]/table)[1]をご利用ください。

0
//div[@class=parent]//table[@class='first'] 
関連する問題