水豚没有选择没有JavaScript的单选按钮

水豚没有选择没有JavaScript的单选按钮,javascript,ruby-on-rails,rspec,selenium-chromedriver,capybara,Javascript,Ruby On Rails,Rspec,Selenium Chromedriver,Capybara,我有一个Rails应用程序,在表单中有两个单选按钮 我注意到,我使用RSpec的水豚测试没有选择No单选按钮,除非它与我使用selenium\u chrome\u headless的JavaScript驱动程序一起运行。该测试套件还有许多其他的Capybara测试,它们在提交表单时不使用JS,除非需要,否则我会避免启用JS驱动程序 在这种情况下,我不明白是什么阻止水豚在没有JS的情况下选择单选按钮 雇员再培训局表格使用: 这将生成以下HTML: 对 不 和水豚试验: 描述“选择否”,js:tru

我有一个Rails应用程序,在表单中有两个单选按钮

我注意到,我使用RSpec的水豚测试没有选择No单选按钮,除非它与我使用selenium\u chrome\u headless的JavaScript驱动程序一起运行。该测试套件还有许多其他的Capybara测试,它们在提交表单时不使用JS,除非需要,否则我会避免启用JS驱动程序

在这种情况下,我不明白是什么阻止水豚在没有JS的情况下选择单选按钮

雇员再培训局表格使用:

这将生成以下HTML:

对 不 和水豚试验:

描述“选择否”,js:true do 它“保存信息”吗 在“姓名”中填入:“爱丽丝” 选择“否” 单击按钮“继续” 终止 终止 这很有效

但是当我在没有js:true的情况下运行相同的测试时,提交表单会发送来自foo_bar_attributes_baz_true的默认值。我没有从水豚那里得到一个错误,它说它无法找到或选择单选按钮,尽管我尝试给它一个id或CSS选择器,但总是得到相同的查询参数


有JavaScript驱动程序和没有JavaScript驱动程序的两种设置之间会有什么不同,使得Capybara choose方法在启用JavaScript之前不会实际设置输入值?

这是因为您的“无”单选按钮是只读的,因此无法选择它。 我假设在使用真正的浏览器运行时,您会遇到一些JS,这些JS会删除单选按钮的可读性

更新:在仔细考虑之后。readonly属性在单选按钮元素上实际上是无效的,因此Capybara中有一个bug,它考虑了该属性,但是HTML在技术上也是无效的,所以


仅供参考:Capybara master branch现在应该忽略单选按钮上的readonly属性

可能是CSS框架在幕后使用了一点JS来创建单选按钮吗?哦,我完全忽略了readonly属性!谢谢你的回答和更新。我在simple_form repo上开了一个问题,调查readonly属性的来源,以及它是否是单选按钮的问题。@martini bonanza不客气-别忘了接受答案,这样问题就会被标记为已回答