如何使用页面对象计算匹配数?

How to count number of matches using page object?

我的应用程序有一个列表,它的大小经常变化。所以我需要在开始测试用例之前获取 li 计数。所以这就是我以前获取计数的方式

b.lis(:xpath => "//ul[@id='global_nav']/li[contains(@id, 'nav-')]").count

现在我需要以页面对象的方式实现这一点。我在我的页面文件中声明了如下列表。

list_item(:global_nav_count, :xpath => "//ul[@id='global_nav']/li[contains(@id, 'nav-')]")

如果我尝试按以下方式计算

page.global_nav_count_element.count

它returns 找不到方法错误。任何人都可以提出任何解决方案来以页面对象的方式实现这一目标吗?

list_item 访问器类似于 Watir 的 li 方法,因为它 returns 第一个匹配元素。如果你想要一个元素的集合,你需要告诉页面对象。

li 个元素的集合的访问器是 list_items(注意复数形式):

list_items(:global_nav_count, :xpath => "//ul[@id='global_nav']/li[contains(@id, 'nav-')]")

创建的访问集合的方法也是复数的:

page.global_nav_count_elements.count