我正在尝试使用索引来访问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)
如何使用索引访问这些元素。
答案 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来查看这是否是其他人的问题。