我在我的页面上有以下代码代码,我想检查一下:
...
<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>……
我使用Watir-webdriver和page-object。我需要获得与“标签-链接”类的块相关的所有链接。
我有以下代码:
element(:tags, :p, :css => "tags-link a")tags_element仅返回第一个链接。
下面的代码只会给我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你能帮助me...to使用页面对象获取页面上与“标签-链接”相关的所有链接吗?
谢谢,安娜
发布于 2013-06-24 21:55:44
可以使用links在页面对象中定义链接集合
class MyPage
include PageObject
links(:tag_link, :css =>".tags-link a")
end这将创建一个collection_name_elements方法,该方法返回一个匹配的页面对象元素数组。您可以遍历它以对每个元素执行操作。例如,要输出每个链接的文本:
page.tag_link_elements.each do |link|
puts link.text
end
#=> test1
#=> test2
#=> test3
#=> test4
#=> test5
#=> test6发布于 2013-08-09 03:06:16
这就是你所需要做的:
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"]]如果您不喜欢动态数组,您总是可以使用flatten方法将其转换为一维,或者使用to_s方法将其转换为字符串。定义一个新的类和指定场景对我来说似乎有点过头了,但对每个人来说都是各有千秋。
注意: ps(: class,‘tag-link)是给定页面的DOM中具有属性class和value tag-link的所有p元素的集合。
https://stackoverflow.com/questions/17276695
复制相似问题