web-dev-qa-db-ja.com

xpathを使用してHTML5データ属性を取得する方法

Webdriverのxpathを使用して最初のテーブル(table1)を取得するにはどうすればよいですか?

<span id="dynamically generated id" data-id="table1">
  <table>
  ...
  </table>
</span>

<span id="dynamically generated id" data-id="table2">
  <table>
  ...
  </table>
</span>

私はすべてを得ることができますdata-id要素ですが、テキスト内でフィルタリングしますtable1は、正確な要素を取得します。

これはうまくいきませんでした!

driver.findElement(By.xpath("//@*[starts-with(name(),'data-id') [contains(text(),'table1')]]")); 
19
Bala

私自身の質問に答える...これは正確な要素を取得するようです。

driver.findElement(By.xpath("//*[@data-id='table1']"))
10
Bala

次のようなテーブルが表示されます。

//span[@data-id='table1']/table

を選択 data-id属性を付けて、名前tableの子要素を取得します。

21
Moritz Petersen

cssSelectorも使用できると思います

driver.findElement(By.cssSelector("[data-id='table1']"));
1
Adam Bilinski

試してみてください(これは xpath:値に文字列が含まれる特定の属性を持つノードを検索しますXPathを使用した属性の取得 )を組み合わせて構築します)

driver.findElement(By.xpath("//*[contains(@data-id, 'table1')]/@data-id"));
0
Uri Agassi