2016-10-05 2 views
0

Мне нужно выбрать одно из нескольких значений типа радиокнопки, используя @FindBy. Вот мой html-код, который мне нужно автоматизировать.@FindBy аннотация для переключателей

Я попытался дать @FindBy(how=How.CSS,using= "[type='radio']" and value) Но я должен динамически передавать значение. то есть. Выбирайте BlueSkies или Pangea airlines. Каков наилучший способ написать его. Будет @FindBy вернуть список WebElements, и я могу над этим работать. Пожалуйста помоги.

<input type="radio" name="outFlight" value="Blue Skies Airlines$361$271$7:10"/> 
</td> 
<td class="data_left" align="LEFT" bgcolor="CCCCCC"> 
<font size="-1" face="ARIAL"> 
<b>Blue Skies Airlines 361</b> 
</font> 
</td> 
<td class="data_center_mono" align="CENTER" valign="TOP" bgcolor="CCCCCC"> 
<font size="-1" face="ARIAL">7:10</font> 
<br/> 
</td> 
<td class="data_center" align="CENTER" bgcolor="CCCCCC" nowrap=""> 
<font size="-1" face="ARIAL">non-stop</font> 
</td> 
</tr> 
<tr> 
<td class="data_verb_xcols" valign="top" bgcolor="#FFFFFF" colspan="4"> 
</tr> 
<tr> 
<td class="frame_action_xrows" rowspan="2" align="CENTER" bgcolor="#FFCC00" valign="CENTER"> 
<input type="radio" name="outFlight" value="Pangea Airlines$362$274$9:17"/> 
</td> 
<td class="data_left" align="LEFT" bgcolor="CCCCCC"> 
<font size="-1" face="ARIAL"> 
<b>Pangaea Airlines 362</b> 
</font> 
</td> 

ответ

0
@FindBy(how = How.CSS, using = "[type='radio']") 
private List<WebElement> radioButtons; 

Несколько больше объяснений, поддерживающих решение дать по @Guy, вы можете написать метод для выбора радио динамически. Например,

public void selectRadio(String airlineName){ 
    for(WebElement radio : radioButtons){ 
    if(radio.getAttribute("value").contains(airlineName) 
     radio.click(); 
    } 
} 

Вы можете использовать итератор, если хотите. Вам просто нужно вызвать этот метод, чтобы объект страницы передавал имя авиакомпании в качестве аргумента.

3

Значение в @FindBy не может быть динамическим. Вы можете разделить его на два

@FindBy(how = How.CSS, using = "[value*='Blue Skies Airlines']") 
private WebElement blueSkyesRadioButton; 

@FindBy(how = How.CSS, using = "[value*='Pangea Airlines']") 
private WebElement pangeaAirlinesRadioButton; 

Или вставить их обоих в список и работать с индексами

@FindBy(how = How.CSS, using = "[type='radio']") 
private List<WebElement> radioButtons; 
+0

Да, @rajsat, вы можете определить собственный метод для возврата веб-элемента, указав значение из списка вышеперечисленных радиокниг. –