1. ホーム
  2. xpath

[解決済み] Xpath: クラスを含み、かつ特定の子要素がテキストを含む div を選択する。

2022-03-13 02:44:52

質問

の助けを借りて このSO質問 ほぼ正常に動作するxpathができました。

//div[contains(@class, 'measure-tab') and contains(., 'someText')]

しかし、これは2つの divs : 一つは子である td を持ち、もう一方はその子である span .

のあるものに絞るにはどうしたらいいのでしょうか? span ?

<div class="measure-tab">
  <!-- table html omitted -->
  <td> someText</td>
</div>

<div class="measure-tab">  <-- I want to select this div (and use contains @class)
  <div>
    <span> someText</span>  <-- that contains a deeply nested span with this text
  </div>
</div>

解決方法は?

を見つけるには div を含むあるクラスの span 任意の深さで 特定のテキストを含む、試してみてください。

//div[contains(@class, 'measure-tab') and contains(.//span, 'someText')]

とはいえ、この解決策は非常に壊れやすいようです。もしテーブルの中に span には、探しているテキストが含まれています。 div を含むテーブルもマッチングされます。もっとしっかりした要素のフィルタリングの方法を見つけることをお勧めします。例えば、IDやトップレベルの文書構造を使用するなどです。