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.
参见:
- https://github.com/rimian/capybara-angular-material
- https://rubygems.org/gems/capybara-angular-material
它是这样工作的:
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'
我可以在 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.
参见:
- https://github.com/rimian/capybara-angular-material
- https://rubygems.org/gems/capybara-angular-material
它是这样工作的:
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'