如何从Ruby中的Page Objects迭代select_list

时间:2014-03-10 10:49:58

标签: ruby iteration selectlist page-object-gem

我有一个页面对象,其中包含一个位置列表项。

select_list(:locations, :id => 'locations)

我希望有一个位置列表,然后选择其中一个。 类似的东西:

def select_item_different_than d_item    
 list_items = :locations.items #This is wrong, but you get the point
 list_items.each do |item|
   if item != d_item
     item.select
     return
   end
 end
end

非常感谢:)

1 个答案:

答案 0 :(得分:1)

选择列表元素具有options方法,该方法返回其选项元素的数组。您可以迭代数组并将它们与d_item进行比较。

方法可以是:

def select_item_different_than d_item    
  list_items = locations_element.options
  list_items.each do |item|
    if item.text != d_item
      item.click
      return
    end
  end
end 

请注意,需要进行以下更改:

  1. 选择列表元素由locations_element而不是:locations检索。
  2. 选项列表由options而不是items检索。
  3. 在if语句中,item != d_item已更改为item.text != d_item。我的假设是你要比较选项的文本,而d_item是一个字符串。
  4. 选项元素没有select方法。相反,请使用click方法。
  5. 就个人而言,我认为该方法可能更清晰:

    def select_item_different_than d_item    
      locations_element
        .options
        .find{ |option| option.text != d_item }
        .click
    end