Ruby on rails 如何使用水豚和硒测试从页面中删除项目?

Ruby on rails 如何使用水豚和硒测试从页面中删除项目?,ruby-on-rails,selenium,rspec,capybara,Ruby On Rails,Selenium,Rspec,Capybara,我正在尝试使用Capybara(head)和Selenium在Rails 3.0.8中编写一个集成测试。我想测试一下,当用户单击我网页上某个项目的“删除”按钮时,该项目是否被删除。因此,在网页上,我使用JQuery代码段隐藏了该项 $('#interaction').fadeOut(); 我使用follow rspec测试,将Capybara.default_wait_时间设置为5秒,但是似乎没有任何东西能让我通过测试。我怎样才能正确地测试它 describe "A User adding a

我正在尝试使用Capybara(head)和Selenium在Rails 3.0.8中编写一个集成测试。我想测试一下,当用户单击我网页上某个项目的“删除”按钮时,该项目是否被删除。因此,在网页上,我使用JQuery代码段隐藏了该项

$('#interaction').fadeOut();
我使用follow rspec测试,将Capybara.default_wait_时间设置为5秒,但是似乎没有任何东西能让我通过测试。我怎样才能正确地测试它

describe "A User adding an Interaction" do
  describe "when looking at an Item detail page" do
    it "should be able to delete and existing interaction", :js => true do
      sign_in_and_view_item
      page.should have_content "ITEM DETAILS - #{@item.name}"
      fill_in "interaction-input", :with  => "My Interaction"
      click_button "item-interaction-submit"
      page.should have_content "My Interaction"
      click_link "Delete Interaction"
      wait_until do
        page.evaluate_script('$.active') == 0
      end
      #page.should_not have_content "My Interaction"
      page.should have_no_content "My Interaction"
    end
  end
end

最后,我将这一行添加到spec/spec\u helper.rb中

Capybara.ignore_hidden_elements = false
使用此规范

需要“spec\u helper”

describe "A User adding an Interaction" do
  describe "when looking at an Item detail page" do
    it "should be able to delete and existing interaction", :js => true do
      sign_in_and_view_item
      page.should have_content "ITEM DETAILS - #{@item.name}"
      fill_in "interaction-input", :with  => "My Interaction"
      click_button "Save"
      page.should have_content "My Interaction"
      click_link "Delete Interaction"
      should_be_hidden "My Interaction"
    end
  end
end
与此功能一起应隐藏

def should_be_hidden text, selector=''
  sleep Capybara.default_wait_time
  its_hidden = page.evaluate_script("$('#{selector}:contains(#{text})').is(':hidden');")
  its_not_in_dom = page.evaluate_script("$('#{selector}:contains(#{text})').length == 0;")
  (its_hidden || its_not_in_dom).should be_true
end

Capybara 2.1支持
has_text?
方法,该方法采用类型参数
:visible
,该参数将检查页面中的所有可见文本