2016-12-08 1 views
0

以下は、固有のXPathが必要なHTMLコードです。 Firebugのは私など次のhtmlコードの汎用xpathが必要

.//*[@id='service_dlg']/form/p[4]/span/input[1] [For Essential] 

.//*[@id='service_dlg']/form/p[4]/span/input[2] [For Enhanced]

私は私のコードで複数のXPathを書く必要がないように、私は[@name = 'Essential']ようなものが必要のようなXPathを与えます。関数からessential, enhanced and premiumのような値を渡したいと思います。

<p> 
<label style="vertical-align:top">Feature Pack:</label> 
<span style="display:inline-block"> 
<input name="pack" value="Essential" type="radio"> 
<label class="feature">Essential</label> 
<input name="pack" value="Enhanced" type="radio"> 
<label class="feature">Enhanced</label> 
<input name="pack" value="Premium" type="radio"> 
<label class="feature">Premium</label> 
<br> 
<input name="featurepack" value="u" type="checkbox"> 
<label class="feature">URL Filtering</label> 
<br> 
<input name="featurepack" value="t" type="checkbox"> 
<label class="feature">Threat Prevention</label> 
<br> 
<input name="featurepack" value="w" type="checkbox"> 
<label class="feature">Wildfire</label> 
<br> 
</span> 
+2

私はCSSセレクタ '入力を使用します[name = pack] [value = "Essential"] 'Essentialの代わりに変数を入れることができます。 CSSセレクタはxpathよりはるかに優れています – pagep

+0

これはうまくいかなかった。私はファイアバグであなたが提案したCSSセレクタを試しました、そして、それは一致するノードが見つかりませんでした。 – Monu

+0

IFRAMEですか?あなたはページへのリンクを投稿できますか? – JeffC

答えて

0

試しEnhancedために、次のように:

//input[@value='Enhanced'] 

それがジェネリックにすると、関数のパラメータとして値を受け取り、次のようにしてみてくださいするには:

driver.find_element_by_xpath("//input[@value='%s']" % value) # where value is function parameter, can be Essential, Enhanced or Premium 
+0

おかげさまで、ありがとうございました。回答を受け入れ、アップアップしています。あなたが新しい仲間だから、ちょうどそれを知らせる... –

+1

私の悪い。私は答えを受け入れた。もう一度、ありがとうございます。 – Monu

関連する問題