2017-09-28 10 views
1

要素がありますiduniqueId 周囲にはさまざまなタグがありますが、その中に特定のタグを付けたいと思っています。特定のタグを持つ要素を特定の要素と比較するXpath

<div> 
    <div> 
     <input> </input> 
    </div> 
    <div> 
     <form> 
      . 
       . 
       <input id="uniqueId"> </input> 
       . 
      . 
     </form> 
    <div> 
</div> 

私はid="uniqueId"を言うのXPathを持っている場合は、最寄りinputタグを言い取得したい:ここ

は一例です。

私はセレンでこれを使用する必要が <ancestor-siblings>::[@tag="input"]//*[@id="uniqueId"]/parent::following-sibling::input

または//*/input/*/[@id="uniqueId"]

のようなもののようなものを試してみました。

私は様々なXpathチアシットを通過しましたが、私が必要とするものは達成できませんでした。

+0

"最も近い"という意味は、正確に何ですか?また、 ''とは何ですか?その上に、バックスラッシュはXPathでは動作しません。あなたの試行は、構文的には遠隔地でも有効です。あなたは何も試していない*まだ、ない分。 – Tomalak

+0

@Tomalak:私たちが持っている要素のxpathからDOMをたどるならば、それが最も近いと言えます。 ''それは私たちがそのようなことをする方法があれば尋ねているだけです。私はスラッシュの事を修正しました –

+0

idを持つ入力タグから、divになるために少なくとも2つのレベルに移動する必要があります(またはancestor :: formを使用してレベルを上げる方が良い)、先行兄弟を使用してdivの上に入力し、その内部に入力タグを取得します。また、parent :: followingで試しているxpathは構文エラーを起こします。 – Grasshopper

答えて

1

[@id='uniqueId']要素の場合は、preceding inputとなります。代わりにfollowing::とお試しください。

//*[@id='uniqueId']/preceding::input[1] 

これはあなたの質問ですか?

+0

正確に私が探していた。 '// * /祖先:: divの[データバインド@ = "ojModule:dynamicConfig()"] [ID = "プロ" @]:' それとも ' は、私はまた、のような何かを思い付きました// * [@ id = "professional"] /../../../../../../../../子孫:: input [@ type = "text"] ' しかしあなたの解決策は現場にあります。 –

関連する問題