0

私はこのxmlを持っている正しいxpathを取得するのに問題があります:

<span
 id="X6_5"
 class="FormatTableElementReadonly"
 onblur=" applyToSameControl(this); "
 onclick="handleOnClick(this, event);" 
 onchange="handleOnChange(this, event);" 
 onfocus="handleOnFocus(this, event);" 
 style="" 
 scripttype="text" 
 readonly="readonly" 
 tabindex="" 
 sctype="Text" 
 datatype="string" 
 buttonid="Column4" 
 dvdvar="" 
 ref="var/L.user.array/L.user.array[5]" 
 name="var/L.user.array/L.user.array[5]"
>
 problem
</span>

私の最初の推測では.//*[@id='X6_5'] 、xml でランダムに作成されなかった唯一のものは「問題」であることがわかり、その場所に何があったかがわかったため、これは実際には思い通りに機能しなかったということでしたX6_5:-P ...それなら.//*[@name='problem']私の推測だったでしょうが、それは私に与えます:

次のエラーのため、xpath 式 .//*[@name, 'problem'] を持つ要素を見つけることができません:

エラー: INVALID_EXPRESSION_ERR: DOM XPath 例外 51 (警告: サーバーはスタックトレース情報を提供しませんでした)

あまり明確でなくて申し訳ありません。これを使用するのは初めてですが、試していただきありがとうございます。

私がやろうとしているのは、サイトの値をセレンにある配列と比較することです。たとえば、私の配列には「problem、exp、linker」が含まれており、私のサイトにはこれらすべてを含むリストがありますが、何かがうまくいかず、値の 1 つが欠落していることがあります。これが事実かどうかを確認したい。

はリスト内の.//*[@id='X6_5']単なる場所であり、関心のない任意の値である可能性があります。そのため、リストに「問題」が見つかるかどうかを確認する必要があります。「span [contains'problem']」のようなことを試しました。aso が成功しませんでした。これはすべて Iframe にありますが、押すことはでき.//*[@id='X6_5']ますが、「スパン」の名前を表示したり、「スパン [contains'problem']」を押したりすることはできません。他に何を提供できるかわかりませんので、何か不足している場合は、そう言ってください。できる限りお答えします。

あなたの誰もがそれがxpathで私を助けることができると思います.

4

4 に答える 4

1

あなたの質問はあまり明確ではありません。「xmlでランダムに作成されなかったのは「問題」だけだった」と言ったときの意味がわかりません。

とはいえ、既に推測したように、この特定の要素を選択するための 1 つの可能な XPath は次のようになります。

//span[@id = 'X6_5']

本当に「問題」(この要素の値) に一致させたい場合は、次のようにすることもできます。

//span[. = 'problem']
于 2013-04-09T15:18:36.533 に答える
0

要素をその中のテキストで照合するには、 のような属性を使用せず、@name代わりに text() 関数を使用します。

//span[text() = 'Problem']

失敗の原因となっているスパン テキスト内に空白がある場合は、次のnormalise-spaceような関数を使用して空白を取り除くことができます。

//span[normalize-space(.) = 'Problem']
于 2013-05-03T10:58:40.883 に答える