Как получить индекс родительского элемента с помощью Watir Webdriver? - PullRequest
1 голос
/ 29 декабря 2011

У меня есть этот HTML-код:

<div class="A">
  <div class="B">
    Text1
  </div>
</div>
<div class="A">
  <div class="B">
    Text2
  </div>
</div>

Так что мне нужно найти индекс div class = 'A', где я найду текст.Я использую Watir Webdriver, и теперь у меня есть этот код:

if @ff.div(:class=>'A').div(:text=>'Text1')
  then ind=@ff.div(:class=>'A').index
end

, но, конечно, это не работает, говоря «неопределенная локальная переменная или метод« index »».

Ответы [ 2 ]

1 голос
/ 30 декабря 2011

Если вы пытаетесь получить индекс как способ обращения к элементу, с которым хотите работать, и лучший способ его найти - это какой-то атрибут дочернего элемента, тогда есть лучший способ.

например. если ваша цель состояла в том, чтобы щелкнуть экземпляр класса A, который был обернут вокруг класса div с надписью «Text1», то сделайте это

browser.div(:class => 'B', :text => 'Text1').parent.click

Это особенно хорошо для ситуаций, когда желаемый внешний контейнер не имеет полезных атрибутов.

В приведенном выше примере вы также можете просто сделать это

browser.div(:class => 'A', :text => 'Text1').click  
1 голос
/ 29 декабря 2011

Невозможно получить индекс с помощью веб-драйвера, поскольку он относится к коллекции совпадающих элементов. То, что вы можете попытаться сделать, это собрать текст elemetns как массив, а затем получить индекс целевого текста.

@@ff.divs(:class, 'A').collect(&:text).index('Text1')

Обратите внимание, что это будет работать только для простых сценариев (как ваш пример). Если вам нужно атаковать более сложный случай, обновите ваш пример, чтобы он соответствовал реальному сценарию.

...