Capybara选择(“单选按钮”)不起作用

我的观点快照:

 

然而,在我的Rspec集成测试文件(spec / requests / requests_spec.rb)上,当我写时(注意,选择单选按钮是用户从列表中请求项目的表单的一部分,并且测试是针对结果页面的提交后,应指明用户请求的项目)。 我正在使用gem’rspec-rails’,’2.13.1′

 describe "Requests" do subject { page } describe "new request" do before { visit root_path } describe "with valid information" do before do choose("Snow/waterproof shell (upper)") click_button submit end it { should have_content("Snow/waterproof shell (upper)") end end end 

我总是得到错误:

 ←[31mFailure/Error:←[0m ←[31mchoose("Snow/waterproof shell (upper)")←[0m ←[31mCapybara::ElementNotFound←[0m: ←[31mUnable to find radio button "Snow/waterproof shell (upper)"←[0m ←[36m # ./spec/requests/requests_spec.rb:24:in `block (4 levels) in '←[0m 

如果我尝试选择(“头灯”)或任何其他选项,则相同。 聪明的人有什么想法? 这似乎很容易……

我曾多次遇到过这个问题。 如果您根据dom中的ID选择表单元素,那么它更可靠:

 before do choose 'request_item_headlamp' click_button submit end 

如果没有看到其他单选按钮会出现ID轨道,我无法分辨。 只需在chrome中右键单击它,检查元素,然后将元素ID剪切并粘贴到测试中。

我怀疑有时当choose不能可靠地检查单选按钮时,可能是因为动画正在进行中。

如果您怀疑这导致您的choose呼叫不可靠,请尝试禁用动画,例如在测试环境中将执行时间设置为0秒。 或者,在测试中等待一段时间,以便完成动画。