使用Watir在div下面查找包含多个链接的文本

时间:2013-05-17 21:36:42

标签: ruby testing automation cucumber watir

我正在尝试验证链接的文本是否存在于。在单击链接之前,div不可用。单击链接后,可以单击更多链接。下面是单击以显示其他链接后html的样子。

<div class="more-links">
   <a href="url">First Link</a>
   <a href="url">Second Link</a>
   <a href="url">Third Link</a>
   <a href="url">Fourth Link</a>
   <a href="url">Fifth Link</a>
</div>

我想在div出现后确保文本“Third Link”存在。

我试过了,但是说它找不到那个元素。

assert_equal(true, browser.div(:class => "more-links").a(:text => "Third Link"))

我可以找到这个文本但是非常慢并且想要指定这个特定的div

browser.text.include?("Third Link")

思想?

2 个答案:

答案 0 :(得分:5)

以下代码不会返回true

browser.div(:class => "more-links").a(:text => "Third Link")
#=> #<Watir::Link:0x..f99c8864c located=false specifiers={:tag_name=>["a"], :text=>"Third Link"}>

因此,assert_equal返回false。

如果exists?附加到该行,则会返回true

browser.div(:class => "more-links").a(:text => "Third Link").exists?
#=> true

答案 1 :(得分:0)

  

browser.text.include?(“第三个链接”)

     

我可以找到这个文本但是非常慢并想要指定   这个特殊的div

......这正是你在这里所做的:

browser.div(:class => "more-links").a(:text => "Third Link")

因此,在原始代码行中,您只需将“浏览器”替换为更具体的搜索:

browser.div(:class => "more-links").a(:text => "Third Link")

另请注意,您永远不会写:

assert_equal(true, ...)

因为你可以节省一些打字并写下来:

assert(...)