Как щелкнуть / проверить определенную кнопку-переключатель, если это столбец в HTML-таблице с использованием Selenium RC? - PullRequest
0 голосов
/ 25 февраля 2010

У меня есть переключатель, который является первым столбцом из многих строк в HTML-таблице. Второй столбец каждой строки - это соответствующий текст каждой радиокнопке. Как выбрать конкретный переключатель в столбце 1, если мне присвоено значение, соответствующее столбцу 2? Например, у меня есть слово «Собака», и я пытаюсь проверить / щелкнуть соответствующий переключатель из следующей HTML-таблицы:

<table class="myClass">
<tr>
  <td><input type="radio" name="radioName"></td>
  <td>Dog</td>
</tr>
<tr>
  <td><input type="radio" name="radioName"></td>
  <td>Cat</td>
</tr>
</table>

Таблица должна быть неизменной. Я знаю, что это плохой способ использовать стол, но это то, с чем я должен работать. Спасибо.

Ответы [ 3 ]

2 голосов
/ 25 февраля 2010

Итерация по каждой строке и получение значения второго столбца. Если это значение - то, что вы ищете, выберите переключатель. Итак, в псевдокоде:

def select_radio_button(second_value):
  for row = 0 to rows_in_table:
    if (second_value == table_value(row)):
      select_radio_button(row, 1)

Это требует написания table_value и select_radio_button, чего можно достичь, написав пару простых запросов XPath. Сделать это, не зная, что еще находится на странице, сложно, поскольку ни один из элементов не имеет идентификаторов. Итак, вы бы написали что-то вроде:

def table_value(row, column):
  return get_text("//table[@class='myClass']//tr[%s]/td[%s]" % (row, column))

def select_radio_button(row, column):
  check("//table[@class='myClass']//tr[%s]/td[%s]/input[@type='radio']" % (row, column))

Можно сделать это полностью с одним XPath, хотя читаемость сомнительна:

check("//table[@class='myClass']//td[text()='Dog']/../td[1]/input[1]")

Если вы много занимаетесь этим, возможно, стоит потратить некоторое время на создание абстракций для этого, чтобы ваши тесты не просто читались как строки XPath.

0 голосов
/ 04 апреля 2014

Используйте

//td[text()='Dog']/preceding-sibling::td/input -- Radio Button for Dog.

//td[text()='Cat']/preceding-sibling::td/input -- Radio Button for Cat.
0 голосов
/ 25 февраля 2010
<html>
<head>
<script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.3.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
   function check_from_val(val) {
      /*Find td containing matching text*/
      var matching_val = $('td').filter( function() { return $(this).text() == val } );
      /*Find the closest tr parent */
      var parent_row = matching_val.parents("tr")[0]; 
      /*Find the input descendent of tr and check it */
      $(parent_row).find("td input").attr("checked",true);
   }    
</script>
</head>
<table>
   <tr><td><input type="radio" name="rdoName" /></td><td>Dog</td></tr>
   <tr><td><input type="radio" name="rdoName" /></td><td>Cat</td></tr>
 </table>
 <a href="javascript:check_from_val('Dog')">Dog</a>
 <a href="javascript:check_from_val('Cat')">Cat</a>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...