2012-01-25 39 views
1

這彈出殺死我的許多測試。即使是簡單的DOM交互,如.exists?時間到。有沒有什麼方法可以檢測到它的出現和解僱?如何應付「無反應的腳本」彈出窗口控制與watir-webdriver火狐

Warning: Unresponsive script. 

A script on this page may be busy, or it may have stopped responding. You can stop the script now, or you can continue to see if the script will complete. 

dom.max_script_run_time = 999

dom.max_chrome_script_run_time = 19

這些網站不是設計也不是由我的影響。我只是在作爲客戶而向他們發出指示。

回答

1

我運行一個小的autoit3應用程序,它可以殺死彈出窗口。如果我記得正確的話,它會等待一會兒,看看彈出窗口是否在它被殺死之前被處理。這爲我消除了許多挫折。我也有一個版本,可以匹配從文件中讀取的標題或正文中的特定關鍵字 - 這樣可以避免殺死需要保留的內容。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
; AutoIt Version:  3.1.0            ; 
; Author:    Dave McNulla          ; 
; Script Function: Close unwanted popups during test automation.  ; 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 


Opt("GUIOnEventMode", 1) ; Change to OnEvent mode 
Opt("WinTextMatchMode", 1) ;0=best, 1=quick 
Opt("WinTitleMatchMode", 2)  ;1=start, 2=subStr, 3=exact, 4=advanced 
Opt("TrayIconHide", 0) ;0=show, 1=hide 
Opt("TrayMenuMode", 0) ;0=default 
TraySetIcon("Shell32.dll", 98) 

dim $SleepTime = 2000 
dim $Max = 100 

$Message = "{ENTER}" 
$ButtonClick = "[CLASS:Button; TEXT:OK]" 
$Title = "[CLASS:#32770;TITLE:Internet Explorer]" 

While 1 
    If WinExists($Title) Then 
     WinActivate($Title) 
     Sleep($SleepTime) 
     ControlClick($Title, "", $ButtonClick) 
    EndIf 
    Sleep($SleepTime) 
    If $Max < 1 Then Exit(1) 
WEnd 
+0

+1代碼。我的Ruby工具在Ubuntu Linux下運行,在那裏有大量的本地用戶界面自動機,儘管AutoIt可以被Wine支持。然而,有時我的webdriving作業會被髮送到Selenium網格以加速,在這種情況下,我甚至可能不知道哪個PC(或OS)將實際運行Web瀏覽器。順便說一句,在Windows中,我一直是AutoHotKey的粉絲。 AutoIt是否可以讓你編譯成.exe? – Marcos

+0

對於可以實施的每個平臺,可能都有解決方案 - 這將有助於您的網格解決方案。 AutoIt3確實創建了可執行文件,而且它們非常小。它幾次拯救了我的培根。如果你願意,我可以分享我的自動腳本的Dropbox文件夾。 –

+0

我發現這個Python工具(但我從來沒有用過Python),可以在Linux上使用:http://ldtp.freedesktop.org/wiki/Docs - 我已經看到類似的Mac OS X:http:// pypi。 python.org/pypi/atomac - 當然還有Windows http://www.tizmoi.net/watsup/intro.html –