2011-08-29 89 views
12

我使用的硒客戶端2.4.0在Mac 10.6.6用Firefox 5.使用WebBackedSeleniumDriver,我跑了「selenium.getEval」命令導致一個Firefox警告,Selenium&Firefox:如何關閉「無響應的腳本」警告?

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

Script: resource://fxdriver/modules/utils.js:9161" 

值「dom.max_script_run_time」about:config是「0」,它應該完全禁用上述對話框。然而,我仍然得到了對話。有什麼辦法可以防止警告對話框出現嗎?

回答

0

將它設置爲一個非常大的數字而不是「20」?

0

dom.max_script_run_time設置以秒爲單位。將它從10更改爲20只是等待時間的兩倍。值爲0將禁用它,但這可能會導致運行腳本鎖定您的瀏覽器。你可能只是使用一個非常大的值。

更多細節在這裏:

http://kb.mozillazine.org/Dom.max_script_run_time

+1

我編輯了我的問題以表明值已經是「0」(零),表明一切都應該被禁用。然而,這種警告仍在出現。思考這是一個硒錯誤,但不確定。 – Dave

6

​​是正確的偏好,但它僅適用於網頁。瀏覽器用戶界面(以及像fxdriver這樣的擴展都是其中的一部分)受到首選項dom.max_chrome_script_run_time的限制(默認值爲20秒)。你也應該將它設置爲0。

文檔:https://developer.mozilla.org/en/Preferences/Mozilla_preferences_for_uber-geeks#DOM_preferences

+0

謝謝,但是當fxdriver警告關閉時,它已經設置爲零。然後我將它設置爲20,但又收到警告。我的印象是這些設置對Selenium沒有影響,至少不是我似乎正在使用它的方式(使用WebDriverBackedSelenium類) – Dave

+1

(我知道這是一箇舊帖子)@Dave是否指出Selenium使用一個固定的,總是相同的Firefox配置文件?我認爲它默認會在每次運行時創建一個新的配置文件。 –

5

不管你在啓動過程中已經安裝在您的個人資料,硒同時設置值2417483647,試圖圍繞瀏覽器的警告得到。但是,由於值太大,FF最終會忽略它,並使用默認值10/20來代替。即使您指定Selenium使用您的個人資料作爲模板,情況也是如此。

我發現解決這個問題的最好方法是指定 -timeout NNNN

到Selenium Server啓動ARGS。這將設置服務器和客戶端(瀏覽器)超時值。

3

儘管這個線程相當老舊,但目前的硒和Firefox版本仍然存在這個問題。我現在已經有很長時間了這些非常惱人的信息,沒有很好的解決方法。詢問devolopers /郵件列表/谷歌通常會導致以下答案:

在您的應用程序中使用的JavaScript太胖或錯誤,改善您的腳本將有所幫助。

由於在大公司中這是沒有選擇的,所以當你依賴一個你無法訪問的框架時,我決定尋找自己的根本原因。

問題的核心在於,如果您指定-timeout nnnn參數,硒將覆蓋配置文件設置。因此,創建一個自定義的Firefox配置文件模板,並設置​​和dom.max_chrome_script_run_time將無法​​在這裏工作。

只要您指定參數-timeout,這兩個設置就會被您提供給參數的值覆蓋。經過調試和測試的時間,我注意到一些事實:

  • 如果不指定-timeout,Firefox的運行進行精確的30分鐘後,沒有一個腳本超時。在這之後,firefox被硒與SeleniumCommandTimedOutException
  • 殺死只要您指定-timeout(無論哪個值),腳本超時會在幾秒或幾分鐘後出現。這些消息獨立於超時值。
  • -browserTimeout參數不是有用的,因爲我還沒有找到該參數在源中使用的位置。

因爲我們有運行超過30分鐘,我們有2個選項來解決這個問題的一些測試包:

  • 重寫我們的測試包和分裂他們的30分鐘窗口
  • 修補硒中運行運行時間超過30分鐘

請勿使用-timeout參數。

所以選擇自己哪個選項更好。我創建了HTMLLauncher.java一個小而簡單的補丁時90分鐘而不是默認的30

diff --git a/java/server/src/org/openqa/selenium/server/htmlrunner/HTMLLauncher.java b/java/server/src/org/openqa/selenium/server/htmlrunner/HTMLLauncher.java 
index c2296a5..310b39f 100644 
--- a/java/server/src/org/openqa/selenium/server/htmlrunner/HTMLLauncher.java 
+++ b/java/server/src/org/openqa/selenium/server/htmlrunner/HTMLLauncher.java 
@@ -146,6 +146,16 @@ 
    launcher.launchHTMLSuite(suiteURL, browserURL); 

    sleepTight(timeoutInMs); 
+ // SFR, Patch 2013-10-17: To get rid of the damn SeleniumCommandTimedOutException 
+ // we allow the Suite to run 3 times as long as per default (30 min -> 90 min). 
+ if(results == null) { 
+  log.warning("SFR, Patch 2013-10-17"); 
+  sleepTight(timeoutInMs); 
+ } 
+ if(results == null) { 
+  log.warning("SFR, Patch 2013-10-17"); 
+  sleepTight(timeoutInMs); 
+ } 

    launcher.close(); 

如果有必要,我會上傳預編譯的罐子上面的補丁。

0

當我在Web應用程序運行一些自己的蹩腳慢JS時執行Selenium調用時,出現此問題。即使我抓住彈出窗口並在幾秒鐘後重試,FF仍然無法響應Selenium。解決方法是在sleep 10之前,否則任何硒調用將導致彈出。

2

通過在地址欄中鍵入about:config,進入Firefox的隱藏配置頁面。 (確保您正在爲您用於硒的配置文件執行此操作)在「過濾器」框中,鍵入script_run_time。 這會將選項縮小到dom.max_script_run_timedom.max_chrome_script_run_time。右鍵單擊它並選擇修改。一個盒子彈出。將數字更改爲40更大的值。這是腳本在Firefox認爲「無響應」之前可以運行的最長時間。如果在about:config頁面中找不到字符串,可以通過右鍵單擊任意位置來創建它,然後選擇New-> Integer並在其中輸入名稱和值(當被問到時)