ruby-on-rails – 如何使用capybara DSL测试Select2元素?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 如何使用capybara DSL测试Select2元素?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在页面上有一个 Select2元素,通过ajax加载结果.想使用capybara / rspec(使用poltergeist驱动程序)进行测试,但是由于Select2元素实际上是作为一个隐藏字段开始,然后填充< ul>一旦处理结果,一般选择,fill_in或选择助手都不会工作.

我现在有什么样的

it "should have a search field for events" do
    click_link "Select an Event"       # this works as expected
    within('.select2-container') do    # works
      find('.select2-search input').set(event.description[0,5])  # won't work!
      find(:xpath,"li[text()='#{event.description}']").click 
    end
    click_button "Search"
    page.should have_content("Displaying all 2 photos")
  end

上面的第4行,显然capybara可以找到元素,但是值不会改变,Select2决不会调用它. (无法使用正常的fill_in,因为搜索字段元素没有标签,id或名称属性)

解决方法

我创建了一个可以与黄瓜一起使用的帮助器,它没有睡眠,所以它比上面的方法更快.如果您使用Select2提供的createSearchChoice,这也是有效的.

把它放在features / support / select2_helper.rb中

module Select2Helper
  def select2(value,attrs)
    first("#s2id_#{attrs[:from]}").click
    find(".select2-input").set(value)
    within ".select2-result" do
      find("span",text: value).click
    end
  end
end

World(Select2Helper)

使用它像这样:

Then(/^I select2 "([^"]*)" from "([^"]*)"$/) do |value,select_name|
  select2 value,from: select_name
end

测试与Rails 4.1.1和黄瓜1.3.15.

猜你在找的Ruby相关文章