2011-12-29 4 views
1

У меня есть этот HTMLcode:Как получить индекс родительского элемента с помощью Watir Webdriver?

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

Так что мне нужно найти индекс сНа класса = «A», где я нашел некоторый текст. Я использую Watir WebDriver и теперь у меня есть этот код:

if @ff.div(:class=>'A').div(:text=>'Text1') 
    then [email protected](:class=>'A').index 
end 

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

+1

Что вы пытаетесь сделать? Что вам действительно нужно знать? Вам действительно нужно знать индекс или что-то еще? –

+0

Согласитесь с Zeljko здесь .. Расскажите нам, что вам действительно нужно делать, так как «получение индекса» мне показалось бы чем-то, что вы видите как средство до конца, и может быть гораздо лучший метод (например, см. мой ответ ниже), если бы мы знали только то, что вы действительно пытались выполнить –

ответ

1

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

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

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

+0

Вот что мне нужно! Спасибо .. – user1116005

1

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

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

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

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

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

browser.div(:class => 'A', :text => 'Text1').click 
+0

Ну, я не хочу нажимать на это .. Я хочу найти индекс div, как в ответе robertodecurnex. – user1116005

+0

клик был всего лишь одним из примеров действия, которое вы могли предпринять. На самом деле это приводит нас к исходным комментариям к вашему вопросу. "Зачем?" в чем смысл получения индекса? что это делает для вас? Почему вы думаете, что это «что мне нужно»? потому что, если мы знаем больше о том, чего вы пытаетесь достичь, мы сможем показать вам лучшее средство для достижения этой цели –