加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 20:07:20 所属栏目:百科 来源:网络整理
导读:我在页面上有一个 Select2元素,通过ajax加载结果.想使用capybara / rspec(使用poltergeist驱动程序)进行测试,但是由于Select2元素实际上是作为一个隐藏字段开始,然后填充 ul一旦处理结果,一般选择,fill_in或选择助手都不会工作. 我现在有什么样的 it "should
我在页面上有一个 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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读