2016-06-29 15 views
0

私はSelenium webdriverを初めて使用しています。私はC#を使用してスクリプトを記述しています。 男性と女性のオプションを持つ性別のフィールドがありますが、これらのオプションは実際にはラジオボタンですが、ラベルのように表示されます。C# - Selenium Webdriverラベルの上にラベルが表示されないようにラジオボタンを選択できません

私はそれを選択しているために百万個の方法を試みた。)(クリック

  1. driver.FindElement(By.CssSelector( "[値= '女性']"));。
  2. driver.FindElement(By.XPath( "// input [@ value、 'Male']"))
  3. driver.FindElement(By.XPath( "//input[@value='Female']")).Click();
  4. をクリックします。

しかしNONEは、上から働いていない 性別フィールドのHTMLは次のようになります。

<li class="radiobutton-yesno ui-buttonset"> 
 
\t <span class="label"> 
 
\t Gender       
 
\t \t <span class="help-icon" data-title="Your gender is a factor in determining your cost."> 
 
\t \t </span> 
 
\t </span> 
 
\t <input type="radio" id="genderNo_1" name="gender_1" value="Male" class="reqCntrl ui-helper-hidden-accessible"> 
 
\t \t <label for="genderNo_1" class="ui-button ui-widget ui-state-default ui-button-text-only ui-corner-left" role="button"> 
 
\t \t \t <span class="ui-button-text">Male</span> 
 
\t \t </label> 
 
\t <input type="radio" id="genderYes_1" name="gender_1" value="Female" class="ui-helper-hidden-accessible"> 
 
\t \t <label for="genderYes_1" class="ui-button ui-widget ui-state-default ui-button-text-only ui-corner-right" role="button"> 
 
\t \t \t <span class="ui-button-text">Female</span> 
 
\t \t </label> 
 
</li>

は、ページ上のフィールドは次のように表示されます:enter image description here

+0

私はこれを手伝ってください。進行する方法を見つけることができません。 –

答えて

0

<input>タイプはおそらくCSS/JSルールを経由して隠されています。だからあなたはそれらをクリックすることはできません - セレンはあなたができない何かをさせることはありません。

@value属性もラジオボタン<input>に属しています。そのため、セレクタでその要素を使用すると、その要素全体が非表示になります。それはテキストだと

代わりに、<label>またはラベルの下<span>と一致するものを使用します。

  1. //label/span[text()='Female']
  2. //label/span[text()='Male']

PS:これは、この質問の性質上少し心配WRTです:

"あなたの性別は要因iあなたのコストを決める。

+0

お返事ありがとうございます。私はdriver.FindElementを使って試しました(By.XPath( "// label/span [text()= 'Female']"))。 - それは動作しませんでした。次に、driver.FindElement(By.XPath( "// label/span [contains( '、Male')]"))を試してみました。クリック(); - それは一度働いたが、私は再実行しようとしたときに全く動いていない。問題が何であるかを知ることはできません。いずれか他の選択肢を提案することはできますか? –

+0

私は最終的にjavascriptを挿入する必要があり、それは働いた。ページ上のすべてのラベルタグをループし、childnodeプロパティを使用してその下のスパンタグを選択しました。 –

+0

次に、あなたの解決策を回答として掲示して、他のSO訪問者が利益を得るようにする必要があります。 – aneroid

0

ラジオをラベルの中に入れるのは良いUXプラクティスです。そのルールに従うようにマークアップを変更してください。その後、あなたはラベル上でクリックアクションを実行することでラジオを選択できるはずです(@aneroidのようにテキストでラベルを選択)。

0

セレンが投げているエラーを教えてください。

代わりにスクリプトを使用できます。

var temp = "var elt = document.getElementById('#myRadioButton'); elt.click();"; 
driver.executeScript(temp); 
+0

はい私はjsを使っていましたが、それが問題を解決しました。とにかく、ありがとう。 –

関連する問題