如何select2
使用 capybara 填写/选择搜索框(通过 ajax 获取结果)。
在 Rails 项目中使用最新version 4
的select2
和最新的。capybara/rspec
有很多SO
关于如何使用 Capybara 的例子,Select2 3.x
但不是version 4
重写。
如何select2
使用 capybara 填写/选择搜索框(通过 ajax 获取结果)。
在 Rails 项目中使用最新version 4
的select2
和最新的。capybara/rspec
有很多SO
关于如何使用 Capybara 的例子,Select2 3.x
但不是version 4
重写。
对于 4.0,看起来它们实际上简化了很多。对于单个选择,您可以只包含此辅助方法:
def select2(value, **options)
first("#select2-#{options[:from]}-container").click
find(".select2-results__option", text: value).click
end
到目前为止对我有用,但我还没有尝试过更多自定义版本的选择器。
为此,您需要创建自己的支持功能(如果您想多次使用它。)
我有 select2 version 3.xx 的解决方案。这也应该适用于 4。
为此,您需要创建帮助spec/support/feature/xyz.helper.rb
程序,此文件应如下所示:
module Feature
module XYZHelper
def select2(value, element_selector)
first("##{element_selector}").find(".select2-choice").click
find(:xpath, "//body").find(".select2-results li", text: value).click
end
end
end
并从调用规范包括 like include Feature::XYZHelper
。你可以像这样使用它:
select2("Text value here", "Id of selector")
有支持 select2 版本 2/3/4 的 capybara -select-2 gem。默认情况下,它需要 select2 版本 4。如果您使用 select2 版本 2 或 3,则可以将其配置为其他版本
只需将 gem 添加到 Gemfile 中的测试组
group :test do
gem 'capybara-select-2'
end
现在您可以select2
在 Cucumber 或 RSpec 中使用测试助手:
select2 'Buy Milk', css: '#todo'
# Search options
select2 'Buy Milk', from: 'Things to do', search: true
# Create new options
select2 'Millennials', from: 'Generations', tag: true
更新:
从0.3.0
CapybaraSelect2 版本开始自动检测 select2 版本
我知道这是旧的,但这里的大多数答案(以及许多其他帖子)对 select2 版本 4 及更高版本都不起作用。我为它编写了自己的函数,该函数也适用于页面上的多选和多个 select2 输入。但是,您需要将 select2 包装在具有特定 id 的 div 中,以便找到正确的。
def select2(values, id)
values.each do |val|
if page.has_no_css? ".select2-dropdown"
within(id) do
find('span.select2').click
end
end
within ".select2-dropdown" do
find('li', text: val).click
end
end
end
使用示例:
select2([value_to_select], "id of div containing desired select2")
您必须传递一个值数组以供选择,即使它是单个选择。对于其中的每一个,它将打开所需 select2 的下拉列表,然后选择值。