Найдите выбранный переключатель в списке <label> с помощью веб-драйвера selenium

Как перебрать все label предметы в div, Я имею в виду, что есть множество неизвестных тегов с метками, которые имеют переключатель. Использование Selenium WebDriver. Мне нужно найти выбранное radio button, Здесь есть две вещи:

  1. Мне нужно найти количество радиоэлементов
  2. Мне нужно найти выбранный радиоэлемент

Например

<div class="controls">
 <label class="radio inline">
  <input type="radio" value="0" name="PlaceOfResidence"/>
 Urban           
 </label>
 <label class="radio inline">
  <input type="radio" value="1" name="PlaceOfResidence"/>
 Suburb           
 </label>
 <label class="radio inline">
  <input type="radio" value="2" name="PlaceOfResidence"/>
 Rural           
 </label>
 <label class="radio inline">
  <input type="radio" value="3" name="PlaceOfResidence"/>
 Not Available           
 </label>
</div>

Вот что я пробовал

private String isRadioButtonSelected2(String name){
    List<WebElement> webEl = this.getWrappedDriver().findElements(By.xpath("//input[@type='radio' and @name = '"+name+"']/parent::label")); //and @value='"+value+"']"));
    String selectedValue = "";
    for(WebElement element: webEl){
        Boolean selectedRadio = element.isSelected();
        if(selectedRadio){
            selectedValue =this.getWrappedDriver().findElement(By.xpath("//input[@type='radio' and @name = '"+name+"']/parent::label")).getText();

            log("&&&&&&&&&&"+selectedValue);
        }else{
            return null;
        }
    }
    return selectedValue;
}

2 ответа

Решение

Вместо того, чтобы использовать xpath чтобы найти все переключатели, вы можете найти его, просто используя By.name что намного быстрее чем xpath, Попробуйте, как показано ниже:

List<WebElement> radioButtons = this.getWrappedDriver().findElements(By.name("PlaceOfResidence")); 
int size = radioButtons.size();
// This is the count of total radio button

for(WebElement radio : radioButtons) 
 {
  If(radio.isSelected())
   {
     String  selectedValue =radio.findElement(By.xpath("./parent::label")).getText();
    }
  }

Надеюсь, поможет...:)

// Это даст количество радиоэлементов

List<WebElement> radioButtons = driver.findElements(By.xpath("//input[type=radio]")); int size = = radioButtons.size();

// Перебираем вышеуказанный элемент и используем метод isSelected() для идентификации выбранных радиоэлементов

Надеюсь это уточнить

Другие вопросы по тегам