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