Watir-webdriver:使用索引访问元素

时间:2012-03-05 11:50:53

标签: ruby watir watir-webdriver

我正在尝试使用索引来访问li元素

<div class="item-list">
<ul>
<li class="views-row views-row-1 views-row-odd views-row-first">
<li class="views-row views-row-2 views-row-even">
<li class="views-row views-row-3 views-row-odd">
<li class="views-row views-row-4 views-row-even">
<li class="views-row views-row-5 views-row-odd">
<li class="views-row views-row-6 views-row-even">
<li class="views-row views-row-7 views-row-odd">
<li class="views-row views-row-8 views-row-even">
<li class="views-row views-row-9 views-row-odd views-row-last">
</ul>
</div>

我正在使用的代码是

@browser.div(:class,'item-list').ul.li(:index => 2)

问题是:这些是页面上的元素,我将使用循环来访问每个元素。我认为使用索引将解决问题,但当我编写代码并执行它时,我得到以下错误

expected #<Watir::LI:0x2c555f80 located=false selector={:index=>2, :tag_name=>"li"}> to exist (RSpec::Expectations::ExpectationNotMetError)

如何使用索引访问这些元素。

2 个答案:

答案 0 :(得分:4)

如果你的课程命名很好,那就忘记编制索引了!在“views-row”参数上进行部分匹配:

@browser.li(:class => /views-row-1/)

这可以很容易地进行参数化以进行循环(虽然我不知道你在做什么信息,所以这个循环不会很令人兴奋)。

x = 0
until x==9
  x+=1
  puts  @browser.li(:class => /views-row-#{x}/).text
end

如果您愿意,也可以盲目地浏览div中包含的li:

   @browser.div(:class,'item-list').lis.each do |li|
      puts li.text
   end

答案 1 :(得分:2)

根据Watir wiki,在:index元素上使用supports li方法。因此,除非它是watir-webdriver中的错误,否则我认为索引应该可以正常工作。

您可以尝试watir mailing list来查看这是否是其他人的问题。