【问题标题】:Capybara + Selenium: How to select second item in Chosen.js multiselect list?Capybara + Selenium:如何在 Chosen.js 多选列表中选择第二项?
【发布时间】:2013-09-09 20:51:14
【问题描述】:

我正在尝试使用 Capybara + Selenium 在 Chosen.js 多选列表中选择初始空白之后的第一项。

我有两半,但我很难把它们放在一起。也就是说,我成功使用了下面的sn-p到select an item from a select box based on its index

def select_second_option(id)
  second_option_xpath = "//*[@id='#{id}']/option[2]"
  second_option = find(:xpath, second_option_xpath).text
  select(second_option, :from => id)
end

...下面是said to work 用于选择选定的字段:

def select_from_chosen(item_text, options)
  field = find_field(options[:from], visible: false)
  option_value = page.evaluate_script("$(\"##{field[:id]} option:contains('#{item_text}')\").val()")
  page.execute_script("value = ['#{option_value}']\; if ($('##{field[:id]}').val()) {$.merge(value, $('##{field[:id]}').val())}")
  option_value = page.evaluate_script("value")
  page.execute_script("$('##{field[:id]}').val(#{option_value})")
  page.execute_script("$('##{field[:id]}').trigger('liszt:updated').trigger('change')")
end

但我似乎无法让这两个概念发挥得很好。

如何将这些想法结合起来,使我拥有select_second_option_from_chosen(id) 形式的函数?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 selenium capybara jquery-chosen


    【解决方案1】:

    在您的支持文件夹中创建模块

    module Utilities
      def select_from_chosen(item_text, options)
        field = find_field(options[:from])
        option_value = page.evaluate_script("$(\"##{field[:id]} option:contains('#{item_text}')\").val()")
        page.execute_script("$('##{field[:id]}').val('#{option_value}')")
        page.execute_script("$('##{field[:id]}').trigger('liszt:updated').trigger('change')")
      end
    end
    

    在您的 spec_helper 中添加

    config.include(Utilities)
    

    然后你就可以在你的capybara test中调用这个函数了

    select_from_chosen("User", :from => "user_role_ids")
    

    HTML

    <%= f.collection_select :role_ids, [[:admin, 'Admin'],[:sonar, 'User']], :first, :last, {}, { :class => 'chzn-select' } %>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多