Как использовать Watir с элементами, запускаемыми Javascript

Может кто-нибудь сказать мне, как щелкнуть Watir по элементу, который запускается событиями javascript.

Например, на http://www.kissmetrics.com/ на главной странице, если я нажму на Кнопка «Подробнее» на примере изображения откроет лайтбокс. Затем я могу нажать кнопку «Начать», чтобы перейти на страницу регистрации.

Как я могу смоделировать это в Watir? Т.е. как я могу нажать сначала на кнопку «Подробнее», а затем на кнопку «Начать»?

Спасибо за любую помощь.


person esdfal    schedule 15.02.2011    source источник
comment
Какую кнопку «Начать» вы хотели нажать, есть зеленая в середине страницы, черная справа внизу и ссылка «Начать» в нижнем колонтитуле страницы. Все они ведут в одно и то же место, но если вы хотите щелкнуть по определенному, нам нужно знать, какое именно, чтобы предоставить вам пример кода.   -  person Chuck van der Linden    schedule 10.03.2011


Ответы (3)


ну, на самом деле, когда вы нажимаете, запускаются события javascript, но они могут быть не теми, которые ищет конкретный элемент. А иногда элемент нужно сначала привести в состояние, когда вы можете щелкнуть по нему, например, наведя курсор мыши.

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

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

В этом конкретном случае, если вы намерены нажать СИНЮЮ кнопку «Узнать больше», которая, кажется, находится поверх какого-то снимка экрана, то изучение HTML или DOM показывает, что у него есть удобное значение идентификатора, которое можно использовать. Вы также можете видеть, что он «запрограммирован» реагировать на событие onclick, и, что более важно, он открывает новое модальное окно (в данном случае div, который выглядит как всплывающее окно) onclick="new Modal('learn_more_content', {top: 110, modalClass: 'borderless'}).show() . поэтому следующий код должен работать для запуска модального

 browser.button(:id, "learn_more_btn").click

Затем нажмите зеленую кнопку «Начать» (которых несколько, поэтому нам нужен способ указать, какой из них)

browser.p(:class, "cta").button(:class, "green button has_arrow").click
person Chuck van der Linden    schedule 25.02.2011

Я думаю, проблема в том, что события JavaScript не запускаются, когда вы нажимаете ссылку с Watir. Это может помочь: Как узнать, какие события JavaScript запущены?

person Željko Filipin    schedule 15.02.2011

Я проверил это в irb, и это работает:

browser.span(:text, 'Learn more').click
browser.span(:text, 'Get Started').click

Пока он находится в DOM, вы можете добраться до него.

person kinofrost    schedule 15.02.2011