Angular material select 对于水豚

Angular material select for capybara

我可以在 RoR RSpec + 水豚中制作 select 吗? 通常我使用:

select 'something', from: 'select_name'

但是对于 angular 的 md-select 是行不通的。 水豚显示错误:

Capybara::ElementNotFound: Unable to find select box "select_id"

我简单地向 Capybara 添加了自定义 md_select 方法。

def md_select name, from: ''
  puts 'md_select `from:` param is required. For example `md_select select_value, from: select_name`' if from.blank?

  find(:xpath, "//md-select[@name='#{from}']").click
  find(:xpath, "//md-select-menu/md-content/md-option/div[text()='#{name}']").click
end

现在我们可以在RSpec中使用它了:

md_select select_value, from: 'select_name'

我已经用 RSpec/Capybara 测试 Angular Material 界面一段时间了,所以,我制作了一个 capybara-angular-material gem that implements a DSL. I'm using the poltergeist driver.

参见:

它是这样工作的:

md_select('Something', from: 'select_label')

出于某种原因,Riddler 的解决方案未找到该选项。我使用 CSS 选择器重写了它并且能够让它工作:

def md_select(name, from:)
  find("md-select[name='#{from}']").click
  find('md-select-menu md-content md-option div', text: name).click
end

用法是这样的,用选项的显示值(不是value属性):

md_select "Female", from: 'gender'