2012-03-27 90 views
0

我在這裏有一個獨特的情況。如果表單中存在一些錯誤,我在表單上有一個按鈕可以產生一個彈出窗口。 [我知道這不是好的做法,但產品的開發人員不會改變這種行爲!]如果所有必填字段都正確填充,表單將導航到其他頁面。現在,我需要編寫一個腳本來點擊表單上的「提交」按鈕,這可能會產生一個彈出窗口或導航到下一頁。攔截瀏覽器在watir中發起的onload事件

我已經使用了「提交」按鈕上的click_no_wait,並按照Javascript Popups in Watir使用AutoIt處理彈出窗口。現在,如果所有信息都有效,並且表單導航到下一頁,我會按照How to wait with Watir中描述的一些技術在腳本中使用延遲。我正在使用Watir :: wait_until()在腳本中等待。

現在有時由於某些網絡問題,當提交表單時,需要一些時間才能轉到下一頁(報表生成)頁面,因此由於wait_until中指定的超時值而導致腳本失敗。

我想知道是否有方法來攔截Watir中的HTML頁面的onload事件,因爲在加載整個頁面之前onload事件不會被觸發。通過這種方式,我可以準確估計超時值,而不是試驗它。因此,我的腳本現在會通過100%而不是說98%。

感謝您對此主題的任何幫助。

回答

1

你可以嘗試設置一個超時解救,然後如果遇到超時則循環一個合理的時間(2或3?)。

E.g.

# All your button clicking and autoit stuff here 
i = 0 
begin 
    b.wait_until{ # the thing you're waiting to happen } 
    rescue TheSpecificTimeOutException 
    # Sorry I can't remember it, the command prompt will tell you exactly 
    # which one 
    if i < 3 
    i += 1 
    retry 
    else 
    raise 
    end 
end 

我相信我會在上面的東西弄亂了,或有會做的更簡潔的方式,但你的想法。當它超時時,再放棄幾次嘗試後再放棄。

+0

感謝您的提示!我只是想要一個更強大的方法,我認爲如果onload事件可以被攔截,它可能非常強大! – chaitanya 2012-03-27 16:01:50

相關問題