Как использовать watir-webdriver, как я могу щелкнуть строку таблицы? - PullRequest
3 голосов
/ 19 апреля 2011

Я пытаюсь преобразовать мои старые сценарии watir для использования вместо них watir-webdriver, поскольку это (в конечном итоге) будет поддерживать IE9 и Firefox 4. $browser.table_row(:id => "account_1").click - это то, что я использовал, чтобы щелкнуть первую строку таблицы на экранеwatir / firewatir, но API для этого был изменен в watir-webdriver.Теперь код такой: $browser.table(:class => "sortable")[0].click, который должен взять первую строку таблицы и щелкнуть по ней.Это кажется успешным, так как он продолжает выполнение кода, но фактически не щелкает строку.

Может кто-нибудь объяснить, какой будет правильный синтаксис в этом случае?

Вот исходный код области, которую я хочу щелкнуть:

<table class="sortable">
<thead>
    <tr id="">
        <th> </th>
        <th class="sort" > Name </th>
        <th class="sort" > Number </th>
    </tr>
</thead>
<tbody>
    <tr id="account_1" onclick=";$('timer').show();; new Ajax.Request('create_new_account', {asynchronous:false, evalScripts:true, onComplete:function(request){;$('timer').hide();initializeCustomEffects();}})">
        <td></td>
        <td class="sortTd">Test Account</td>
        <td class="sortTd">1</td>
    </tr>
</tbody>

Ответы [ 2 ]

5 голосов
/ 20 апреля 2011

Ваш код находит первую строку таблицы, которая находится внутри <thead> и не имеет обработчика нажатия. Попробуйте вместо этого:

browser.tr(:id => "account_1").click

Вот скрипт , демонстрирующий поведение, а вот обзор пересмотренного API таблицы.

3 голосов
/ 20 апреля 2011

Строка не является объектом HTTP, который обычно реагирует на щелчок. Есть ли внутри строки что-то вроде ссылки, по которой вы хотите щелкнуть, или сама строка настроена с использованием обработки событий для ответа на определенное событие, например, «onclick» или «onmousedown» ??

Если первое, попробуйте фактически нажать на объект в строке. Если последнее, то попробуйте поэкспериментировать с методом .fire_event и другими событиями.

Например:

browser.table(:class => "sortable")[0].fire_event("onmousedown") 

или, может быть

browser.table(:class => "sortable").row(:index, 0).fire_event("onmousedown")

(добавление) AH теперь, когда у нас есть HTML-код, который мы можем видеть, где находится обработчик onclick, и, как указал Jarib, вы щелкали строку заголовка (которая технически является первой строкой таблицы). Вы хотите, вам нужно что-то вроде

browser.row(:id, "account_1").click
browser.row(:text, /Test Account/).click
browser.table(:class => "sortable").row(:index, 1).fire_event("onclick")

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

browser.cell(:text, ' Name ').click
...