【问题标题】:Capybara choose("radio button") not working水豚选择(“单选按钮”)不起作用
【发布时间】:2014-01-31 19:56:39
【问题描述】:

我的观点快照:

<%= form_for @request do |f| %>
  <div class="form-group">
    <%= f.radio_button(:item, "Snow/waterproof shell (upper)") %>
    <%= f.label(:item, "Snow/waterproof shell (upper)") %>
    </br>
    <%= f.radio_button(:item, "Headlamp") %>
    <%= f.label(:item, "Headlamp") %>
  </div>

然而,在我的 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 <top (required)>'←[0m

如果我尝试使用 choose("Headlamp") 或任何其他选项,则相同。聪明人有什么想法吗?这似乎很容易......

【问题讨论】:

    标签: ruby-on-rails rspec radio-button capybara rspec-rails


    【解决方案1】:

    我已经多次遇到这个问题。如果您根据 dom 中的 ID 选择表单元素,则更加可靠:

    before do 
      choose 'request_item_headlamp'
      click_button submit
    end
    

    如果不查看其他单选按钮的 ID 导轨,我无法判断。只需在 chrome 中右键单击它,检查元素,然后将元素 ID 剪切并粘贴到您的测试中。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-01
        • 2017-02-08
        • 1970-01-01
        • 1970-01-01
        • 2017-11-25
        • 1970-01-01
        相关资源
        最近更新 更多