Используя Watir, как я могу выбрать радиоуправляемый элемент управления, используя как имя, так и значение?

#watir #watir-webdriver

#watir #watir-webdriver

Вопрос:

Я получаю в своей функции имя и статус (значение), и с этим я хочу установить один из переключателей.

Я пытаюсь сделать что-то подобное, но не принимаю

 r = $browser.input(:name => number).parent.radio :value => status
r.set
  

html-код переключателей таков

 <input id="1" type="radio" checked="checked" value="activo" name="b1" onclick="oncheckRadio();" tabindex="7">    
<input id="1" type="radio" value="inactivo" name="b1" onclick="oncheckRadio();" tabindex="8">
  

Комментарии:

1. Ваши разработчики создают недопустимый HTML, у вас есть значения идентификаторов, которые не являются уникальными.. вы должны сообщить об ошибке в этом.

Ответ №1:

Я не совсем понимаю бизнес-логику этого, но вот несколько отвлекающих рассуждений для вас (предположение)

 def set_radio_by_name_and_status(name, status)
    $browser.radio(:name => name, :status => status).set
end
  

Однако оба переключателя имеют имена «b1», поэтому настройка по имени кажется немного излишней. Я полагаю, вы имели в виду имя и статус переключателя.

Комментарии:

1. Танки, я не знал, что мы можем использовать различные элементы внутри браслетов

2. @macwadu Вы можете, если используете символ => и разделяете его запятыми (вы в основном предоставляете хэш-аргумент методу radio)

3. Поскольку они также «подключены» для реагирования на onclick, вы можете захотеть запустить это событие после их установки, если пользовательский интерфейс, похоже, не реагирует так же, как при взаимодействии с ним вручную.