Watir-webdriver: доступ к элементам с помощью индексации - PullRequest
2 голосов
/ 05 марта 2012

Я пытаюсь получить доступ к элементу 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 ]

4 голосов
/ 05 марта 2012

Если у вас есть такие классные названия, забудьте об индексировании! Частичное совпадение с параметром "views-row":

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

Это может быть легко параметризовано для цикла (хотя я не знаю, что вы делаете с информацией, поэтому этот цикл не будет очень захватывающим).

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

Вы также можете вслепую просматривать циклы li, содержащиеся в вашем div, если хотите:

   @browser.div(:class,'item-list').lis.each do |li|
      puts li.text
   end
2 голосов
/ 05 марта 2012

Согласно Wiki Watir, Watir поддерживает метод :index для элемента li.Поэтому, если это не ошибка в watir-webdriver, я думаю, что индекс должен работать.

Возможно, вы захотите попробовать список рассылки watir , чтобы проверить, не является ли это проблемой для других.

...