程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Capybara 不会选择没有 JavaScript 的单选按钮大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Capybara 不会选择没有 JavaScript 的单选按钮?

开发过程中遇到Capybara 不会选择没有 JavaScript 的单选按钮的问题如何解决?下面主要结合日常开发的经验,给出你关于Capybara 不会选择没有 JavaScript 的单选按钮的解决方法建议,希望对你解决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,请注明来意。
标签: