大佬教程收集整理的这篇文章主要介绍了Capybara 不会选择没有 JavaScript 的单选按钮,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个 Rails 应用,表单中有两个单选按钮。
我注意到我的 Capybara 测试(使用 RSpec)不会选择“否”单选按钮,除非它使用 JavaScript 驱动程序运行(我使用 SELEnium_Chrome_headless
)。测试套件有许多其他 Capybara 测试,它们在没有 Js 的情况下提交表单,除非需要,否则我会避免启用 Js 驱动程序。
在这种情况下,我不明白是什么阻止 Capybara 在没有 Js 的情况下选择单选按钮。
ERB 表格(使用 simple_form
):
<%= b.input :baz,as: :radio_buttons,label: ''
%>
生成此 HTML:
<fIEldset class="form-group radio_buttons optional foo_bar_baz form-group-valID">
<le@R_673_11064@ class="col-form-label pt-0"></le@R_673_11064@>
<input type="hIDden" name="foo[bar_attributes][baz]" value="">
<div class="form-check">
<input class="form-check-input is-valID radio_buttons optional" type="radio" value="true" checked="checked" name="foo[bar_attributes][baz]" ID="foo_bar_attributes_baz_true">
<label class="collection_radio_buttons" for="foo_bar_attributes_baz_true">Yes</label>
</div>
<div class="form-check">
<input class="form-check-input is-valID radio_buttons optional" Readonly="Readonly" type="radio" value="false" name="foo[bar_attributes][baz]" ID="foo_bar_attributes_baz_false">
<label class="collection_radio_buttons" for="foo_bar_attributes_baz_false">No</label>
</div>
</fIEldset>
还有水豚测试:
describe 'SELEcTing "No"',Js: true do
it 'saves the information' do
fill_in 'name',with: 'Alice'
choose 'No'
click_button 'ConTinue'
end
end
哪个有效。
但是当我在没有 Js: true
的情况下运行相同的测试时,提交表单会发送来自 foo_bar_attributes_baz_true
的默认值。我没有收到来自 Capybara 的错误消息,说它无法找到或选择单选按钮(虽然我确实尝试给它一个 ID
或 CSS 选择器,但总是导致相同的查询参数)。>
这两种设置(使用和不使用 JavaScript 驱动程序)之间有什么不同,这使得 Capybara choose
方法实际上不会设置输入值,除非启用了 JavaScript?
发生这种情况是因为您的“否”单选按钮是只读的 - 因此无法选择。 我假设在使用真实浏览器运行时,您有一些 JS 正在删除单选按钮的只读。
更新:在仔细考虑之后。 readonly 属性在单选按钮 元素上实际上无效,因此 Capybara 中存在一个错误,它考虑了该属性,但是您的 HTML 在技术上也无效,因此...
仅供参考:Capybara 主分支现在应该忽略单选按钮上的 readonly 属性
以上是大佬教程为你收集整理的Capybara 不会选择没有 JavaScript 的单选按钮全部内容,希望文章能够帮你解决Capybara 不会选择没有 JavaScript 的单选按钮所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。