2016-07-15 12 views
2
<document> 
<html class=" js " lang="en" style="" xmlns="http://www.w3.org/1999/xhtml"> 
<head id="head"> 
<body class="modern operational"> 
<div class="row btm16"> 
<div class="col-xs-30"> 
<label>Adjust To </label> 
</div> 
<span id="pb33352:eastFieldForm:j_idt2056:adjInputTextPanel"> 
<input id="pb33352:eastFieldForm:j_idt2056:newValueNumber" class="form-control" type="text" maxlength="11" name="pb33352:eastFieldForm:j_idt2056:newValueNumber"/> 
<span> 
<span id="pb33352:eastFieldForm:j_idt2056:adjustToUnit"/> 
</span> 
</span> 
<div class="col-md-40"/> 
<span id="pb33352:eastFieldForm:j_idt2056:errorMessages"/> 
</div> 
</body> 
</html> 
</document> 

これは、ラベルとテキストボックスを持つ上の単純なページです。テキストボックスにテキストを入力します。Xpathの改善

の助けとなるXPATHです。

上記の解決策では、複数の//..を真ん中に使用することに満足できません。 これを取得するより良い方法はありますかXPATH

私はテキスト

+0

実際、 '// ..'は非常に奇妙なことです。これは、 '/ descendant-or-self :: node()/ parent :: node()'を意味します。つまり、それはあなた自身の親ノードとあなたのすべての非葉子孫の和集合です。 –

答えて

2

「に合わせる」私はfollowing axisを使用する見つけることによってxpathを見つける必要がありますのでご注意ください。

また
//label[normalize-space(.) = 'Adjust To']/following::input 

、私はidの「adjInputTextPanel」の部分を使用することもあると思います十分に良いロケータ:

//span[contains(@id, 'adjInputTextPanel')]/input 
2

あなたは以下のようにpreceding軸を使用して試すことができます: -

//input[preceding::label[normalize-space(.) = 'Adjust To']] 
+0

OPは特に注意してください_ "私はテキストを見つけることによってxpathを見つける必要があります"調整する_ –

+0

@Slanec申し訳ありません...私は見たことがない...今私は更新しました... :) –

0

上記の解決方法のお役に立てれば助かります。

私はまた私の最後から道を試していて、下の1つが役に立つと分かっていました。

//label[contains(.,'Adjust To')]/following::input[1]