2016-04-13 11 views
2

私のXPathは、今私はちょうどinputタグの前divにアクセスし、そのテキストを取得する必要がありますXPathの直接の親に戻ってテキストを取得するにはどうすればいいですか?

//div[contains(@class,'ui-dialog ui-widget ui-widget-content ui-corner-all ui-front ui-draggable')]//div[@class='ui-widget-content slick-row odd' or @class='ui-widget-content slick-row even']/div/input[contains(@id,'custProglabel')] 

です。私が使用してみました:

By.Xpath(//input[contains(@id,'custProglabel')]/preceding-sibling::div).getText

私はこのような多くの要素と私のinputタグの変更の内容のみを持っています。したがって、コンテンツに基づいて、私は直属のdivにアクセスしてテキストを取得しようとしています。あなたが注意点として..

By.xpath("//input[contains(@id,'custProglabel')]/..") 

を使用して直接の親を取得することができます

答えて

6

xpathは小文字の 'x' で開始する必要があります。 XPathの下に

+0

それは働いた! xpathの大文字はそれのためのtypo.sorryでした。 – Aish

0

使用:

//div[contains(@class,'ui-dialog ui-widget ui-widget-content ui-corner-all ui-front ui-draggable')]//div[@class='ui-widget-content slick-row odd' or @class='ui-widget-content slick-row even']/div/input[contains(@id,'custProglabel')]/parent::div 
3

よりもむしろinputに落下し、divまで戻ってきて、div

//div[input/@id='custProglabel'] 

または任意の要素

//*[input/@id='custProglabel'] 
上の述語を使用して を検討

また、はcustProglabel2またはMYcustProglabelと誤って一致する可能性があります。ここでは同等性テストを使用する方がよいでしょう。

+2

子を持つ親を選択するのはなぜでしょうか?// * [@ * @ id = 'id'] '合理的な理由はありますか? –

+0

私は好みがありません、あなたは "本当に理想的ではありません"と書いて以来、より良いパフォーマンスや少ない副作用のような特定の理由があったのか疑問に思っていました。 –

+0

それは、その段階が意味するよりも微妙なので、私はあなたにポイントを与えます。回答が更新されました。 – kjhughes

関連する問題