1

ページ HTML には、名前にいくつかのサブノードが含まれる HTML リンクがいくつかあります。

そのうちの 1 つだけを取得したい。以下:

<a href='foo'>
   <b>Bar</b>
   <div style="height: 18px;">Garbo</div>
</a>

それをターゲットにするには、xpath で正確にしたい: 「"Bar" と "Garbo" の両方を含むリンクを持ってきてください。それらが別々のサブノードにあるかどうかは関係ありません」.

私はこれを試してみましたが、機能に関するいくつかの記事を読んだ後contains、この行は機能しませんでした:

//a[contains(text(),"Bar") and contains(text(),"Garbo")]

要件を満たすためにどのような修正を行うことができますか?

4

2 に答える 2

4

使用する必要があるセレクターは

//a[./*[contains(text(),"Bar")] and ./*[contains(text(),"Garbo")]]
于 2012-07-16T12:13:01.733 に答える
1

使用:

//a[descendant::text()[contains(., 'Bar')] 
  and 
    descendant::text()[contains(., 'Garbo')]
    ]

aこれにより、文字列 "Bar" を含む子孫 (子だけでなく) テキスト ノードと、文字列 "Garbo" を含む子孫テキスト ノードを持つ要素が選択されます。

aこれは、次の場合でも必要な要素を選択します:

<a href='foo'>
   <b><i>Bar</i></b>
   <div style="height: 18px;"><span>Garbo</span></div>
</a>
于 2012-07-16T12:30:35.040 に答える