Сначала давайте попробуем сделать ваш код немного легче для чтения.Заметили все вопросы в комментариях и других ответах?Непонятно, что вы извлекаете из электронной таблицы, а присвоение имени переменной, содержащей эти «радио», просто представляет еще один экземпляр этого термина в разделе кода (и связанном html), который уже усеян этим словом.Назовите это что-то вроде radio_id
, radio_value
или radio_name
, чтобы всем было понятно, что следует извлекать из электронной таблицы и что именно содержит эта переменная.Это также станет более понятным для вас через 4 месяца.
Во-вторых, тщательно оцените, как правильно определить нужный вам предмет.В вашем примере HTML показан только один элемент управления радио, но обычно эти элементы управления поставляются в наборах, и чаще всего ИМЯ используется для определения элементов управления радио, которые находятся в общем наборе, см. Примеры на этой странице .Поэтому использование атрибута name довольно часто является ужасным способом определения переключателя.Значение или встроенный текст, как правило, являются гораздо лучшим способом получения «правильного» радиоуправления из набора.
В-третьих, метод .set
для объекта переключателя watir не принимает параметр,он просто гарантирует, что конкретный указанный радиоконтроль находится в состоянии «установлен»..set
дополняет .clear
(для получения дополнительной информации см. Watir RDOC )
Кроме того, в вашем элементе управления определен обработчик событий, определенный в HTML.Это выполняет сценарий, когда элемент управления получает событие onclick.Поэтому после его установки (или, возможно, вместо установки) для правильной работы страницы вам может потребоваться запустить событие onclick, чтобы вызывался правильный код на стороне клиента.
Имея это в виду, япопробуйте код, который выглядит примерно так
radio_value = worksheet.cells(rows,"A").value
browser.radio(:value => radio_value).set
browser.radio(:value => radio_value).fire_event('onclick')
Soapbox:
Еще одна причина, по которой радиоприемники входят в наборы, заключается в том, что вы не можете «отключить» радиокнопку с помощью мыши, кроме как нажатием другой кнопки втот же набор.Вы почти никогда не видите ни одной радио кнопки на веб-странице.Если требуется одна вещь, которая может быть выбрана или не выбрана, обычно используется элемент «флажок».Если разработчик использует одну радиостанцию в качестве «флажка», внедряя код JavaScript, чтобы заставить его вести себя как флажок, он должен (IMHO) вывести , выстрелить уволить и заменить на разработчика, который знаеткак использовать CSS для таких вещей вместо того, чтобы злоупотреблять плохим радиоуправлением и создавать страницу, которая не будет работать должным образом, если у кого-то отключен JavaScript.