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)
等...
使用 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)
等...