2017-12-08 13 views
0

私はセレンとxpathに少し新しく、私が何か正しいことをしていて、findElementがどのように動作するのか不思議です。私は見て、例を探しましたが、私は見つけることができません。この表(簡易しかし、関連する)を考えるとxpath(ネストされたFindElementをJavaで使用)を使用してテーブルを解析する

<table> 
 
     <thead></thead> 
 
     <tbody> 
 
     <tr> 
 
      <td>R1C1</td> 
 
      <td>R1C2</td> 
 
     </tr> 
 
     <tr> 
 
      <td>R2C1</td> 
 
      <td>R2C2</td> 
 
     </tr> 
 
     </tbody> 
 
    </table>

私は次のように使用している場合は、私が期待してい情報を持っているのだろうか?

WebElement r1 = driver.findElement(By.xpath("//table/tbody/tr[1]")); 
String r1c1 = r1.findElement(By.xpath("//td[1]")).getText(); 
String r1c2 = r1.findElement(By.xpath("//td[2]")).getText(); 

WebElement r2 = driver.findElement(By.xpath("//table/tbody/tr[2]")); 
String r2c1 = r1.findElement(By.xpath("//td[1]")).getText(); 
String r2c2 = r1.findElement(By.xpath("//td[2]")).getText(); 

Altキー:

String r2c1 = driver.findElement(By.xpath("//table/tbody/tr[2]")).findElement(By.xpath("//td[1]")).getText(); 

これは私が実際にやっていると比較して非常に単純化であるが、私は残りの部分が動作する確信していますのでご注意ください。私の質問は、別の要素から要素を見つけ出すことを特に中心にしています。また、テーブルの特定のセルを特定するために使用できる固有のクラス/ IDタグはありません。

これは私の期待通りに機能しますか?私はむしろExecution Performance良い方向にKeep It Short and Simpleにお勧めし

+0

プレフィックスあなたが別の要素の中の要素を見つけるために使用しているのxpath:あなたは、以下の4つのWebElementsからgetText()にしたい場合は

はそれとして、単純なように保ちますたとえば、r1.findElement(By.xpath( ".// td [1]"))。getText(); – Grasshopper

+0

詳細 - https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/WebElement.html#findElements-org.openqa.selenium.By- – Grasshopper

+0

ブーム、それがあります。ありがとう! –

答えて

0

(私は、私はちょうどそれを試みることができる実現したが、その後の答えは、検索するための次の人のためのオンライン利用できないでしょう)。 「」

String r1c1 = driver.findElement(By.xpath("//table//tbody/tr/td")).getAttribute("innerHTML"); 
String r1c2 = driver.findElement(By.xpath("//table//tbody/tr//following::td[2]")).getAttribute("innerHTML"); 

String r2c1 = driver.findElement(By.xpath("//table//tbody//following::tr[2]/td")).getAttribute("innerHTML"); 
String r2c2 = driver.findElement(By.xpath("//table//tbody//following::tr[2]//following::td[2]")).getAttribute("innerHTML"); 
+0

私が実際にやっているのは、行のコレクションをループしているため、Row WebElementに基づいてテーブルのセルをプルする必要がありました。 –

+0

あなたの質問にあなたの質問が出されているかどうかわかりません。もしそうなら、それを受け入れてください。 – DebanjanB

+0

あなたのコメントは価値を追加しましたが、私が探していた答えは元の質問のコメントにあります。 –