22

ドキュメント内の属性の部分的な値は知っていますが、全部ではありません。任意の値を表すために使用できる文字はありますか?たとえば、入力のラベルの値は「A.Choice1」です。「Choice1」と表示されていることは知っていますが、「Choice1」の前に「A.」と「B.」のどちらが表示されるかはわかりません。以下は、関連するHTMLです。入力とラベルには他にも属性がありますが、ページがレンダリングされるたびに同じではないため、参照として使用することはできません。

<tr>
<td><input type="checkbox" /><label>A. Choice 1</label></td>
</tr><tr>
    <td><input type="checkbox" /><label>B. Choice 2</label></td>
</tr><tr>
<td><input type="checkbox" /><label>C. Choice 3</label></td>
</tr><tr>
     <td><input type="checkbox" /><label>D. Choice 4</label></td>
</tr>

これは、「Choice 1」の値を持つラベルの横にある入力を選択するために使用しているXPath式です。ただし、HTMLではAがその前にあります。

//td[label="Choice 1"]/input

HTMLのAがA、B、Cなどのいずれであるかはわかりません。しかし、正しい入力の横には常に選択肢1のテキストが表示されることはわかっています。ラベルに選択肢1と同じではなく、選択肢1が含まれている場合、どのように選択すればよいですか?

4

2 に答える 2

46

XPath式は次のようになります。

//td[contains(@label, 'Choice 1')]/input

tdを含むラベルを持つすべての要素を選択してから、これらの要素内の要素Choice 1を選択します。inputtd

編集:Tomalakのコメントは、「Choice 11」(または「Choice12345」、...)との一致を防ぐための改善を正しく示唆しています。

于 2009-05-14T06:27:58.327 に答える
5

ノードに空ではない属性「align」またはテキスト値「text-align」を含む属性「style」があるかどうかをテストする方法を見つけようとしているときに、Ronaldのソリューションが見つかりました。問題の「ノード」は次のとおりです。

<node> 
  <p>This is left-aligned.</p> 
  <div align="left" >This is aligned LEFT using HTML attribute.</div> 
  <p style="text-align: center;" >This is centered using CSS style attribute.</p> 
  <div align="center" >This is CENTERED.</div> 
  <p style="text-align: right;" >This is right-aligned.</p> 
</this>

このxpath式は機能しました-私を正しい方向に向けたRonaldの答えのおかげで:

//*[contains(@style, 'align') or @align!='']
于 2011-08-17T19:11:50.070 に答える