2016-02-17 2 views
0

Я хочу выбрать один из переключателей на таком тестовом веб-приложении. после попытки и ошибки я не мог узнать, как это сделать.Выбор радио кнопки на веб-сервере Selenium (Java)

Вот код HTML-приложений.

<ol class="plain block-listing solid choice-area"> 
    <li class="qti-choice qti-simpleChoice"data-serial="choice_simplechoice_56c2a110874b8101352859" data-identifier="choice_1"> 
    <div class="pseudo-label-box"> 
    <label class="real-label"> 
    <input type="radio" value="choice_1" name="response-interaction_choiceinteraction_56c2a1108692f930922645"> 
    <span class="icon-radio"></span> 
    </label> 
    <div class="label-box"> 
    <div class="label-content clear" contenteditable="false"> 
    <div class="qti-block">a. Terminal</div> 
    </div> 
    </div> 
    </div> 
    </li> 
    <li class="qti-choice qti-simpleChoice" data-serial="choice_simplechoice_56c2a110878f8127430456" data-identifier="choice_2"> 
    <div class="pseudo-label-box"> 
    <label class="real-label"> 
    <input type="radio" value="choice_2" name="response-interaction_choiceinteraction_56c2a1108692f930922645"> 
    <span class="icon-radio"></span> 
    </label> 
    <div class="label-box"> 
    <div class="label-content clear" contenteditable="false"> 
    <div class="qti-block">b. Pelabuhan</div> 
    </div> 
    </div> 
    </div> 
    </li> 

На моем селеном WebDriver, вот мой код:

WebElement choiceOption = driver.findElement(By.xpath("//html/body/div[1]/div[1]/div/div/div/ol/li[1]/div/label/span")); 
    choiceOption.click(); 

Любой человек может помочь? Спасибо заранее.

+0

'" // HTML/тело/DIV [1]/дел [1]/DIV/DIV/DIV/ол/Li [1]/DIV/метка/интервал «' не очень поддерживается. Почти любое структурное изменение нарушит ваш тест. –

+0

Отметил, спасибо за ваш совет. –

ответ

0

Вы можете использовать входной тег радиокнопки, чтобы выбрать его Попробуйте следующее: Выбор WebElementOption = driver.findElement (By.tagName ("input")); выборOption.click();

+0

Привет, Бхуми, я попробую это. Спасибо за помощь. –

0

Вместо того, чтобы использовать абсолютный путь, вы можете перейти с относительным путем и есть несколько способов найти этот веб-элемент. Одним из простейших xpath будет: driver.findElement (By.xpath ("// input [@ value = 'choice_1']")). Click();

+0

Привет, Рандхика, я попробую это. Спасибо за помощь. –

0

Да тот же ответ

driver.findElement(By.xpath("//label[@class='real-label']//*[@value='choice_2']")).click(); 
//The above code selects the option "Pelabuhan" 
+0

Привет, Deo, я попробовал ваше предложение, но его все еще вернусь с исключением NoSuchElement. Спасибо за помощь. –

0

Вы можете сделать это несколькими способами.

  1. Получить все элементы опций, прокрутить и нажать на нужный вам номер.

    опции List = driver.findElements (By.css ("вход ol.plain.block-listing.solid.choice-область") для (опция в настройках) { если (option.value == "choice_2 «) { если) option.click() (option.isChecked (!); перерыв; }}

    }

  2. простой способ, вы можете построить динамическую х-путь или css со значением, которое вы хотели нажать. Например, если choice_2 - это то, что мы хотели бы щелкнуть

    Параметр WebElement = driver.findElement (By.css (input [value = 'choice_2'])); если (! Option.isChecked()) опция.click();

Надеюсь, что это поможет!

+0

Привет, Пракаш, я попробую это. Спасибо за помощь. –

0

В методе первых, найти Webelement О.Л. тега, в оле найти список ввода тега и применить цикл для списка ввода тегов и матч со значением входного тега нажмите

Попробуйте ниже код:

`

myMethod(String inputTagValue){ 
WebElement olTag = driver.findElement(By.tagName("ol")); 
List<WebElement> inputTagList = olTag.findElements(By.tagName("input")); 
for (WebElement item: inputTagList) { 
       if(item.getAttribute("value").equals(inputTagValue)){ 
        item.click(); 
        break; 
       } 
    } 
} 

`

+0

Привет, Сандип, я попробую это. Спасибо за помощь. –

Смежные вопросы