2011-10-11 107 views
0

在我的web應用程序中,我有一個簡單的文本框。在這個文本框中,我有一個jQuery函數,它將始終在每個關鍵幀上執行。有了這個函數,就會分配一個Ajax請求,每次SQL查詢的結果都會加載該請求。我的代碼相當於 RailsCasts的代碼。現在我正在用Selenium測試我的webapp。用這行代碼Watir和Ajax請求

browser.text_field(:id => 'textfield').set("Search text") 

文本將被寫入並且內容將被改變。後應該單擊它置於動態內容與此代碼

browser.a(:id => "link").click 

問題的鏈接現在是,點擊事件不會被執行。有人知道問題可能是什麼?或者也許是Watir和Ajax的例子?

+0

我不明白這裏有什麼問題。當你點擊一個鏈接什麼都沒有發生?而且會發生什麼?你能否創建一個示例頁面並提供URL? –

+0

你說:「現在我正在用Selenium測試我的webapp。用這行代碼」,但接下來是Watir代碼..這讓我有些困惑......這只是對這個問題的缺失編輯? –

+0

你用Watir-Webdriver試過這個嗎? –

回答

0

沒有一個例子網站再次進行測試它很難確定,但我會拋出一些潛在的解決方案,爲您

如果客戶端JavaScript正在查找onkeyup事件,則可能需要在設置該字段的內容後觸發一個。您可以通過.fire_event方法執行此操作。

您可能只是在查看計時問題。如果鏈接的性質因輸入而發生變化,那麼Watir可能會連續發射兩個評論,而客戶端代碼仍然在做這件事(尤其是如果有來回的話)在jquery代碼和web服務器之間,發生這種情況也會導致網絡延遲,你可能需要在命令之間做一個短暫的休眠(蠻力)或等待某個特定的元素呈現預期的狀態(稍微多一點工作,但也有一點點更強大,不會中斷是延遲超過你的睡眠時間)

我建議通過IRB手動執行命令(你可以從你的腳本剪切和粘貼,如果需要),以便能夠觀察狀態瀏覽器,並注意在特定操作後更新屏幕/ DOM的任何延遲如果在IRB中正常工作,但不是通過腳本執行時它通常被視爲時間問題的確認。

0

如果這是最初的Watir/Firewatir,我會嘗試在它試圖點擊它之前將它懸停在鏈接上。

我以前遇到過這樣的問題,輸入「自動填充」字段後會出現鏈接(即它試圖通過從大量可能性列表中篩選出您想要的文本來猜測)。

試試這個:

browser.wait_until{browser.link(:id => "link").present?} 
browser.link(:id => "link").fire_event("onmouseover") 
browser.link(:id => "link").click 

如果它的工作原理,嘗試沒有.fire_event("onmouseover"),因爲它可能僅僅是因爲它試圖點擊鏈接纔看得到前,不這樣做。

如果這實際上是一個關於「Selenium」(錯誤標記爲Watir)的問題,那麼忽略所有上述內容,因爲我是一個我從未使用過的應用程序。