Ruby 在一个div中查找文本,该div下有多个Watir链接

Ruby 在一个div中查找文本,该div下有多个Watir链接,ruby,testing,automation,cucumber,watir,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="u

我试图验证链接的文本是否存在于文档中。在单击链接之前,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

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

想法?

以下代码不会返回
true

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

以下代码不会返回
true

browser.div(:class => "more-links").a(:text => "Third Link")
#=> #<Watir::Link:0x..f99c8864c located=false specifiers={:tag_name=>["a"], :text=>"Third Link"}>
browser.div(:class => "more-links").a(:text => "Third Link").exists?
#=> true
browser.text.include?(“第三个链接”)

我可以找到这个文本,但速度非常慢,希望指定 这个部门

browser.text.include?("Third Link")
…这正是你在这里所做的:

browser.div(:class => "more-links").a(:text => "Third Link")
因此,在原始代码行中,您只需将“浏览器”替换为更具体的搜索:

browser.div(:class => "more-links").a(:text => "Third Link")
还要注意,你永远不会写:

assert_equal(true, ...)
因为你可以省去一些打字,只需写:

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

我可以找到这个文本,但速度非常慢,希望指定 这个部门

browser.text.include?("Third Link")
…这正是你在这里所做的:

browser.div(:class => "more-links").a(:text => "Third Link")
因此,在原始代码行中,您只需将“浏览器”替换为更具体的搜索:

browser.div(:class => "more-links").a(:text => "Third Link")
还要注意,你永远不会写:

assert_equal(true, ...)
因为你可以省去一些打字,只需写:

assert(...)

#a实际上为我返回了一个Watir::Anchor对象(不同的Watir webdriver版本?),但在任何情况下,它肯定不是布尔值true。这一点很好。我使用的是watir classic,它返回一个
watir::Link
,而不是watir-webdriver中的
watir::Anchor
对象。有多个类具有相同的名称,我认为这就是watir找不到元素的原因。谢谢你是说那个班有不止一个部门吗?在这种情况下,您需要添加一个额外的限定符,例如Index,或者从保存div.的唯一容器开始。。在这种情况下,向我们展示更多的HTML可能会有所帮助#a实际上为我返回了一个Watir::Anchor对象(不同的Watir webdriver版本?),但在任何情况下,它肯定不是布尔值。这一点很好。我使用的是watir classic,它返回一个
watir::Link
,而不是watir-webdriver中的
watir::Anchor
对象。有多个类具有相同的名称,我认为这就是watir找不到元素的原因。谢谢你是说那个班有不止一个部门吗?在这种情况下,您需要添加一个额外的限定符,例如Index,或者从保存div.的唯一容器开始。。在这种情况下,向我们展示更多的HTML可能会有所帮助。如果您使用cucumber,为什么要使用assert而不是。应该?
browser.div(:class=>“更多链接”).a(:text=>“第三链接”)。应该存在。
如果您使用cucumber,为什么要使用assert而不是。应该?
browser.div(:class=>“更多链接”).a(:text=>“第三链接”).应存在