Watir,Page-objects:如何获取具有相同标识符的所有元素

Ann*_*net 5 webdriver watir-webdriver page-object-gem

我想在我的页面上检查以下代码:

...    
<p class="tags-link"> 
<a href="/search?q=test1" rel="nofollow">test1</a>
<a href="/search?q=test2" rel="nofollow">test2</a> 
<a href="/search?q=test3" rel="nofollow">test3</a>
</p>
....
<p class="tags-link"> 
<a href="/search?q=test4" rel="nofollow">test4</a>
<a href="/search?q=test5" rel="nofollow">test5</a> 
<a href="/search?q=test6" rel="nofollow">test6</a>
</p>
Run Code Online (Sandbox Code Playgroud)

....

我使用Watir-webdriver和page-object.我需要通过"tags-link"类获取与块相关的所有链接.

我有以下代码:

element(:tags, :p, :css => "tags-link a")
Run Code Online (Sandbox Code Playgroud)

tags_element仅返回第一个链接.

以下代码将仅提供与第一个块相关的3个链接:

element(:tags, :p, :css => "tags-link")
tags_element.element.links.each do |elm|
  puts elm
end
Run Code Online (Sandbox Code Playgroud)

但我需要获得所有标签块

现在我有以下代码可行,但我想成为"页面对象"导向:

@browser.elements(:css =>".tags-link a").each do |tag|
  puts tag
end
Run Code Online (Sandbox Code Playgroud)

你可以帮助我...使用页面对象获取与"tags-link"相关的页面上的所有链接

谢谢,安娜

Jus*_* Ko 6

您可以使用links以下命令在页面对象中定义链接集合:

class MyPage
    include PageObject

    links(:tag_link, :css =>".tags-link a")
end
Run Code Online (Sandbox Code Playgroud)

这将创建一个collection_name_elements返回匹配的页面对象元素数组的方法.您可以迭代它以对每个元素执行操作.例如,要输出每个链接的文本:

page.tag_link_elements.each do |link|
    puts link.text
end
#=> test1
#=> test2
#=> test3
#=> test4
#=> test5
#=> test6
Run Code Online (Sandbox Code Playgroud)