2011-04-19 137 views
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應該抓住表格的第一行然後點擊它。它似乎是成功的,因爲它繼續執行代碼,但實際上並未單擊該行。使用watir-webdriver,我怎樣才能點擊一個表格行?

有人可以解釋什麼是正確的語法在這種情況下?

這裏的周圍區域的源代碼,我想點擊:

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

+0

頁面HTML的樣本可能有助於查看事件對事件做出的反應,如何識別其中的行或元素等。 – 2011-04-19 20:06:04

回答

5

您的代碼查找表的第一行,該表位於<thead>之內,並且沒有onclick處理程序。試試這個:

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

這裏的a script演示的行爲,並here's修訂後的表API的概述。

+1

該代碼沒有正常工作,但我將其更改爲'browser.tr(:id =>「account_1」).fire_event(「onclick」)'並獲得了期望的結果。謝謝! – Roderick 2011-04-20 13:18:23

3

一排是不是一個HTTP對象,通常會以一個點擊響應。行內是否有東西需要點擊鏈接,或者是使用事件處理來響應某個特定事件(如「onclick」或「onmousedown」)的行本身設置?

如果是前者,請嘗試實際點擊該行內的對象。如果後者嘗試使用.fire_event方法和不同的事件。

例如:

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

也許

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

(附錄)AH現在我們有我們能看到的onclick處理程序以及由雅立指出,HTML,你是點擊標題行(這在技術上是表中的第一行)要點擊你想要的東西,你需要沿着

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 
+0

我嘗試了這兩種方法,使用onclick事件,因爲這是顯示的內容來源,但無濟於事。 – Roderick 2011-04-19 20:28:30

相關問題