3

古い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>

4

2 に答える 2

5

あなたのコードは、テーブルの最初の行を見つけています。これは の中に<thead>あり、onclick ハンドラーを持っていません。代わりにこれを試してください:

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

動作を示すスクリプトを次に示します。また、改訂されたテーブル API の概要を次に示します

于 2011-04-19T21:45:55.030 に答える
3

行は、通常はクリックに応答する HTTP オブジェクトではありません。クリックしたいリンクのような行の中に何かがありますか、または「onclick」や「onmousedown」などの特定のイベントに応答するイベント処理を使用して行自体が設定されていますか??

前者の場合は、行内のオブジェクトを実際にクリックしてみてください。後者の場合は、.fire_event メソッドとさまざまなイベントを試してみてください。

例えば:

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

または多分

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

(補遺) 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")

(あなたの意図がテーブルをソートすることでない限り、その場合、その列でテーブルをソートするには、最初の(ヘッダー)行のセルをクリックする必要があると思われます.

browser.cell(:text, ' Name ').click
于 2011-04-19T20:06:21.867 に答える