Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Watir webdriver:使用索引访问元素_Ruby_Watir_Watir Webdriver - Fatal编程技术网

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

Ruby Watir webdriver:使用索引访问元素,ruby,watir,watir-webdriver,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 clas

我正在尝试使用索引访问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>
问题是:这些是页面上的元素,我将使用循环访问每个元素。我认为使用索引可以解决这个问题,但是当我编写代码并执行它时,我得到了以下错误

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

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

根据Watir wiki,Watir使用
:index
方法访问
li
元素。因此,除非它是watir webdriver中的一个bug,否则我认为索引应该可以工作


您可能想试试,看看这是否是其他人的问题。

如果您有这么好的类命名,请忘记索引!对“视图行”参数进行部分匹配:

@browser.li(:class => /views-row-1/)
这可以很容易地为循环参数化(尽管我不知道您在用这些信息做什么,所以这个循环不会很令人兴奋)

如果您愿意,还可以盲目地循环查看
div
中包含的li:

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

你试过了吗。莉丝[2]?它有效!!!!!您能解释一下为什么它不能使用li(:index=>2)访问元素吗。感谢您的帮助,在div定位器创建下面所有li元素的数组后,使用“lis”复数。你的意思是:把这个特定div中的所有li元素组成一个数组,现在告诉我哪一个是第三([2])。数组使用0索引,因此[2]给出了第三个li。我下面的答案显示了一个“.each do”方法,其工作方式相同。
x = 0
until x==9
  x+=1
  puts  @browser.li(:class => /views-row-#{x}/).text
end
   @browser.div(:class,'item-list').lis.each do |li|
      puts li.text
   end