【问题标题】:Angular material select for capybara水豚的角材料选择
【发布时间】:2016-02-08 08:37:58
【问题描述】:

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

select 'something', from: 'select_name'

但是对于 Angular 的 md-select 是行不通的。 Capybara 显示错误:

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

【问题讨论】:

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


    【解决方案1】:

    由于某种原因,谜语人的解决方案没有找到选项。我使用 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'
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        见:

        它是这样工作的:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-02-17
          • 2020-02-06
          • 2016-10-18
          • 1970-01-01
          • 2020-09-20
          • 2018-04-30
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多