2016-03-22 6 views
-1

このhtmlコードでは、デフォルトで現金が選択されていますので、ラジオの値をカードとして変更したいと思います。ウェブドライバのラジオボタンの値を変更できません

<label> 
    <input id="cash" type="radio" checked="" value="CS" name="cash_cash"> 
    <i></i>CASH 
</label> 
<label> 
    <input id="card" type="radio" value="CD" name="cash_cash"> 
    <i></i>Card 
</label> 

私は以下のコードを使用しましたが、いずれも私に結果を与えませんでした。線の上

METHOD 1

WebElement pl=driver.findElement(By.xpath("//input[@name='cash_cash'and @value='card']")); 
pl.click(); 

METHOD 2

List<WebElement> radiobuttons = driver.findElements(By.id("card")); 
for(WebElement radio:radiobuttons) 
{ 
    String cvalue = radio.getAttribute("value"); 
    if(cvalue .equals("CD")) 
    { 
     radio.click(); 
    } 
    else 
    { 
     System.out.println("fails"); 
    } 
} 

int rcount = radiobuttons.size(); 

唯一の2つのオプションがありますが、4として私をrcount与えます。

私はこれを(そのポップアップで)助けてください。 HTML source

+0

'rcount'は4です。アプリケーションが要素に重複IDを割り当てていますか? – Buaban

+0

そのページにはラジオボタンが2つしかありません。私はhtmlコードに重複した名前がないことを確認しました。そのポップアップ画面です!それはカウントを反映している – Ksingh

答えて

0
First select xpath of radio button which you want to select,then use click(), enable it and display by using isEnabled and isDisplayed 

のThread.sleep(5000);/div/div [1]/h3/span/div [2]/label/i "))。click(); driver.findElement(by.xpath(" .////[ id = 'payment_add_form']/div/div [1]

0

方法1のXPath式が正しくありません。 @value='card'の代わりに@id='card'にする必要があります。

List<WebElement> radiobuttons = driver.findElements(By.xpath("//input[@name='cash_cash'and @id='card']")); 
for(WebElement radio:radiobuttons) 
{ 
    if(radio.isDisplayed()){ 
     radio.click(); 
     break; 
    } 
} 

溶液2 By.xpath:

溶液1:以下のコードを参照By.cssSelector

List<WebElement> radiobuttons = driver.findElements(By.cssSelector("input#card[value='CD']")); 
for(WebElement radio:radiobuttons) 
{ 
    if(radio.isDisplayed()){ 
     radio.click(); 
     break; 
    } 
} 
+0

それは働いていない仲間 – Ksingh

+0

@ Ksinghあなたのポップアップのスクリーンショットとアプリケーションの完全なHTMLコードを教えていただけますか? – Buaban

+0

複製した "名前"を隠していると言ったので、どうすればそれを避けることができますか? – Ksingh

関連する問題