Webdriver 页面对象:如何获取具有相同标识符的所有元素

Webdriver 页面对象:如何获取具有相同标识符的所有元素,webdriver,watir-webdriver,page-object-gem,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 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>
tags\u元素仅返回第一个链接

下面的代码将为我提供与第一个块相关的3个链接:

element(:tags, :p, :css => "tags-link")
tags_element.element.links.each do |elm|
  puts elm
end
但我需要得到所有的标签块

现在我有以下代码可以使用,但我希望是面向“页面对象”的:

@browser.elements(:css =>".tags-link a").each do |tag|
  puts tag
end
你能帮我…使用页面对象获取页面上与“标签链接”相关的所有链接吗

谢谢,
Anna

您可以使用
链接定义页面对象中的链接集合:

classmypage
包含页面对象
链接(:tag_link,:css=>“.tags link a”)
结束
这将创建一个
collection\u name\u elements
方法,该方法返回匹配页面对象元素的数组。您可以对它进行迭代以对每个元素执行操作。例如,要输出每个链接的文本:

page.tag_link_元素。每个do|link|
放置link.text
结束
#=>test1
#=>测试2
#=>test3
#=>测试4
#=>test5
#=>test6

您只需执行以下操作:

ary_of_tests = @browser.ps(:class, 'tag-links').map do |t|
    t.as.map do |x| 
        x.text 
    end 
end
=> [["test1", "test2", "test3"], ["test4", "test5", "test6"]]
如果您不喜欢动态数组,您可以始终使用展平方法将其设置为一维,或使用to_s方法将其设置为字符串。定义一个新的类和指定场景对我来说似乎有些过分,但对每个人来说都是自己的


注意:ps(:class,'taglinks)是给定页面的DOM中具有属性class和值标记链接的所有p元素的集合

是的,它起作用了。谢谢刚刚修复了输入错误:page.tag_link_elements.each do | link | put link.text end谢谢,修复了答案中的输入错误。
ary_of_tests = @browser.ps(:class, 'tag-links').map do |t|
    t.as.map do |x| 
        x.text 
    end 
end
=> [["test1", "test2", "test3"], ["test4", "test5", "test6"]]