当多于元素持有相同的类名时,我们如何获得所有元素值

时间:2013-07-23 09:15:56

标签: pageobjects page-object-gem

当多个元素保持相同的类名时,我们如何获取所有元素值。

例如: 考虑我有n个具有相同类名的元素如下

<span class="country-name">Country 1</span>
<span class="country-name">Country 2</span>
<span class="country-name">Country 3</span>
<span class="country-name">Country 4</span>
<span class="country-name">Country 5</span>

如何获取具有class_name的所有元素值为country_name。

我也尝试过如下:

span(:country, :class => 'country-name')
puts country

执行时,仅打印第一个值(国家1),不打印其他值。我怎样才能获得所有价值

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您可以创建一个集合访问器,它返回所有相关的跨度(即具有“country-name”类的那些)。

在页面对象中,不要调用span,而是调用复数版本 - spans

class MyPage
    include PageObject

    spans(:country, :class => 'country-name')
end

这将创建一个country_elements方法,返回一个包含所有匹配跨度的数组。您可以遍历此数组以获取每个国家/地区的文本(元素):

page = MyPage.new(browser)
page.country_elements.each{ |c| puts c.text }
#=> "Country 1"
#=> "Country 2"
#=> "Country 3"
#=> "Country 4"
#=> "Country 5"