2011-08-29 12 views
12

Sto utilizzando Selenio client 2.4.0 su Mac 10.6.6 con Firefox 5. Utilizzando la WebBackedSeleniumDriver, sto correndo un comando "selenium.getEval" che causa un avvertimento Firefox,Selenio e Firefox: come posso disattivare gli avvertimenti "Script non rispondenti"?

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

Il valore di "dom.max_script_run_time" riguardo: config era "0", che dovrebbe disabilitare del tutto la finestra di dialogo sopra. Eppure, ho ancora il dialogo. C'è un modo per impedire la visualizzazione della finestra di avviso?

risposta

0

Impostarlo su un numero molto grande anziché su "20"?

0

L'impostazione dom.max_script_run_time è espressa in secondi. Cambiarlo da 10 a 20 raddoppia il tempo di attesa. Un valore pari a 0 lo disabiliterà, ma ciò potrebbe comportare uno script in esecuzione che blocca il browser. Potresti semplicemente usare un valore davvero grande.

Maggiori dettagli qui:

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

+1

Ho modificato la mia domanda per indicare che il il valore era già "0" (zero) che indicava che tutto avrebbe dovuto essere disabilitato. Eppure quell'avvertimento stava ancora apparendo. Pensando che questo è un bug di selenio, ma non è sicuro. – Dave

6

dom.max_script_run_time è la preferenza a destra ma si applica solo alle pagine web. L'interfaccia utente del browser (e le estensioni come fxdriver ne fanno parte) sono tuttavia limitate dalla preferenza dom.max_chrome_script_run_time (il valore predefinito è 20 secondi). Dovresti impostarlo su 0 pure.

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

+0

Grazie, ma era già impostato su zero quando si è spento l'avviso fxdriver. Quindi ho impostato su 20, ma ho ricevuto di nuovo l'avviso. La mia impressione è che quelle impostazioni non abbiano un effetto su Selenium, almeno non sul modo in cui mi sembra di usarlo (usando le classi WebDriverBackedSelenium) – Dave

+1

(so che è un vecchio post) @Dave stai puntando il Selenium per usare un profilo fisso, sempre lo stesso di Firefox? Penso che per impostazione predefinita crei un nuovo profilo ogni volta che viene eseguito. –

5

Indipendentemente da ciò che avete installato nel tuo profilo, durante l'avvio, selenio imposta entrambi i valori a 2.417.483,647 mila per cercare di aggirare l'avvertimento del browser. Tuttavia, poiché il valore è troppo grande, FF lo ignora e utilizza il valore predefinito di 10/20. Questo è vero anche se stai puntando il selenio per usare il tuo profilo come modello.

Il modo migliore che ho trovato per aggirare questo è specificare -timeout nnnn

ai args avvio Selenio Server. Questo imposta sia i valori di timeout del server e del client (browser).

3

Sebbene questo thread sia piuttosto obsoleto, il problema esiste ancora con le versioni correnti di selenio e firefox. Ho questi messaggi davvero fastidiosi da un po 'di tempo, senza una buona soluzione. Chiedere i devolopers/mailing list/google di solito dà la seguente risposta:

Il javascript utilizzato nella tua applicazione è troppo grasso o pieno di bug, il miglioramento degli script aiuterà.

Poiché questa non è un'opzione in un'azienda più grande, quando si dipende da un framework a cui non si ha accesso, ho deciso di cercare la causa principale di me stesso.

Il nocciolo del problema è il fatto che il selenio sovrascrive le impostazioni del profilo se si specifica il parametro -timeout nnnn. Pertanto, la creazione di un modello di profilo firefox personalizzato e l'impostazione di dom.max_script_run_time e dom.max_chrome_script_run_time non funzioneranno qui.

Non appena viene specificato il parametro -timeout, queste due impostazioni vengono sostituite dal valore fornito dall'utente.Dopo ore di debug e test ho notato alcuni fatti:

  • Se non si specifica -timeout, firefox corre per 30 minuti esatti, senza uno timeout dello script. Successivamente, firefox viene ucciso dal selenio con un SeleniumCommandTimedOutException
  • Non appena viene specificato -timeout (indipendentemente dal valore), il timeout dello script viene visualizzato dopo alcuni secondi o minuti. Questi messaggi sono indipendenti dal valore di timeout.
  • Il parametro -browserTimeout non è utile in quanto non ho trovato dove questo parametro è utilizzato nell'origine.

Come abbiamo alcune suite di test che vengono eseguiti più di 30 minuti abbiamo 2 opzioni per risolvere questo comportamento:

  • riscrittura nostre suite di test e dividere loro di eseguire all'interno della finestra di 30 minuti
  • Patching selenio per eseguire più di 30 minuti

Non utilizzare il parametro -timeout.

Quindi scegli tu stesso quale opzione è migliore. Ho creato un piccolo e semplice patch per la HTMLLauncher.java per consentire 90 minuti al posto del default 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(); 

io caricare un vasetto pre-compilato con la patch di cui sopra, se necessario.

0

Questo problema appare per me quando eseguo chiamate selenio mentre l'applicazione Web sta eseguendo un proprio JS lento e scadente. Anche se prendo il popup e riprovo dopo pochi secondi, FF non risponde più al Selenio. La soluzione è semplicemente mettere sleep 10 prima altrimenti qualsiasi chiamata selenio risulterebbe in popup.

2

Passare alla pagina di configurazione nascosta in Firefox digitando su: config nella barra degli indirizzi. (assicurati di farlo per il profilo che stai usando per il selenio) Nella casella 'Filtro', scrivi script_run_time. Questo restringerà le opzioni a dom.max_script_run_time e dom.max_chrome_script_run_time. Fai clic con il tasto destro del mouse e seleziona Modifica. Si apre una finestra. Cambia il numero in qualcosa di più grande come 40. Questo è il tempo massimo che uno script può eseguire prima che Firefox lo consideri "non rispondente". Se non riesci a trovare la stringa nella pagina about: config, creala facendo clic con il tasto destro del mouse ovunque e poi scegli Nuovo-> Intero e inserisci lì nome e valori (quando richiesto)

Problemi correlati