角质材料选择水豚

时间:2016-02-08 08:37:59

标签: ruby-on-rails angularjs rspec capybara angular-material

我可以在RoR RSpec + Capybara中选择吗? 通常我使用:

select 'something', from: 'select_name'

但对于棱角分明的md-select是不行的。 Capybara显示错误:

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

3 个答案:

答案 0 :(得分:1)

出于某种原因,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'

答案 1 :(得分:0)

我简单地向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'

答案 2 :(得分:0)

我已经用RSpec / Capybara测试了Angular Material接口一段时间了,所以我做了capybara-angular-material gem来实现DSL。我正在使用poltergeist driver.

请参阅:

它的工作原理如下:

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