2012-08-29 1152 views
0

我目前有一个搜索结果列表,我希望循环并找到特定元素。这个元素可以发生多次(从几个到几千),但我只想找到元素的第一个实例,点击它然后退出我的循环。Watir/Ruby - 通过搜索结果列表循环 - 搜索元素,如果找到元素 - 操作和退出循环

试过以下,但认为我是一个有点过

i = 0 
@browser.div(:id=>"resultsList").lis.each do|li| -- loop through list 
@browser.link(:href=>"linkname").exists --- check if element exists 
@browser.goto(@browser.link(:href=>"linkname") --if it exists click 

break if i == 1 ---then break out of loop 

end 

任何指针将不胜感激 谢谢!

+2

HTML的外观如何?你在寻找什么元素,具体是什么?找不到时你想做什么? –

+0

Aplogies应该澄清:我有一个返回的广告列表,可以添加书签。列表上的某些广告可能已被用户加入书签。我想测试书签功能是否正在工作,所以想要找到列表中尚未被收藏的第一个广告并点击它。我试过@ browser.div(:id =>“resultsList”)。link(:href =>“linkname”)。click但webdriver找不到书签元素,已加书签的广告2 - 可以加入书签 – user1365374

+0

您如何知道哪些链接已加入书签?如果你可以分享一些HTML,这将有助于使它更清晰。 –

回答

2

您不需要遍历元素。默认情况下,Watir-Webdriver将返回第一个匹配元素。

只要做到:

@browser.div(:id=>"resultsList").link(:href=>"linkname").click 

这将点击拥有“链接名称”的href搜索结果中的第一个链接。请注意,如果您确实希望链接文本(而不是href)与“链接名称”匹配,它应该是link(:text=>"linkname")

+1

红宝石真漂亮。 –