Capybara: получить выбранную радиокнопку с помощью webkit или полтергейста

Достаточно легко получить выбранный переключатель с помощью Capybara с помощью драйвера rack_test.

# with rack_test
page.set('input_id')
# => "checked"
page.find('[checked]')
# => #<Capybara::Node::Element tag="input" path="/html/body/p[1]/label[1]/input">

Однако это не работает с webkit или полтергейстом.

# with webkit or poltergeist
page.set('input_id')
# => ""
page.find('[checked]')
Capybara::ElementNotFound: Unable to find css "[checked]"

Я также пытался использовать метод #selected?, но, похоже, он не работает для переключателя.

# with any driver
page.set('input_id')
page.all('input').select(&:selected?)
# => []

Как я могу получить проверенный переключатель с помощью Capybara в webkit или полтергейсте?


person steel    schedule 02.10.2015    source источник


Ответы (1)


Вы сталкиваетесь с разницей между атрибутами и свойствами в браузерах, поддерживающих JS. То, что вы сделали в стоечном тесте, работает, потому что он знает только об атрибутах. Чтобы найти проверенный ввод в других браузерах, вы можете сделать

find('input:checked')

или вы могли бы делать такие вещи, как

find(:checkbox, 'input_id', checked: true)
find(:radio_button, 'input_id', checked: true)
find(:field, 'input_id', type: 'checkbox', checked: true)

так далее...

person Thomas Walpole    schedule 02.10.2015
comment
Вот оно. Спасибо! - person steel; 03.10.2015