Capybara:使用 webkit 或 poltergeist 获取选定的单选按钮

Capybara: get selected radio button using webkit or poltergeist

使用 rack_test 驱动程序很容易通过 Capybara 获取选定的单选按钮。

# 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 或 poltergeist。

# 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?)
# => []

如何在 webkit 或 poltergeist 中使用 Capybara 获取选中的单选按钮?

您 运行 了解支持 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)

等...