2015-03-26 22 views
10

Durante il test, ho bisogno di lunghi ritardi (~ 40 secondi).Come aumentare il timeout della sessione della griglia di selenio?

E vedo che quella sessione di selenio viene cancellata durante quel periodo.

Per favore aiuto: come posso configurare il timeout della sessione per aumentare?

Ecco quello che vedo in meno, che 30 secondi, dopo il ritardo ha iniziato nel registro del nodo Selenio:

INFO org.openqa.selenium.remote.server.DriverServlet - Sessione 7f5fffec-4882-4c4c -b091-c780c66d379d eliminato a causa di timeout del client

E dopo 40 secondi di sonno, sto ottenendo questa eccezione nel mio codice:

org.openqa.selenium.remo te.SessionNotFoundException

Ho provato ad aumentare tutti i possibili timeout. Ecco come mi metto hub:

java -jar selenium-server-standalone.jar -role hub 
-hubConfig selenium_hub.json 
-nodeTimeout 61 
-remoteControlPollingIntervalInSeconds 180 
-sessionMaxIdleTimeInSeconds 240 
-newSessionMaxWaitTimeInSeconds 250 
-timeout 59 

E qui è selenium_hub.json:

{ 
    "host": null, 
    "port": 4444, 
    "newSessionWaitTimeout": -1, 
    "servlets": [], 
    "prioritizer": null, 
    "capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher", 
    "throwOnCapabilityNotPresent": true, 
    "nodePolling": 5000, 
    "cleanUpCycle": 5000, 
    "timeout": 60000, 
    "browserTimeout": 60000, 
    "maxSession": 5, 
    "jettyMaxThreads": -1 
} 

Nessun qualsiasi timeout configurate sui nodi. Ecco quello che vedo nella mia console Griglia:

browserTimeout : 60000 
capabilityMatcher : org.openqa.grid.internal.utils.DefaultCapabilityMatcher 
cleanUpCycle : 5000 
host : null 
hubConfig : /usr/local/selenium/config/selenium_hub.json 
jettyMaxThreads : -1 
maxSession : 5 
newSessionMaxWaitTimeInSeconds : 250 
newSessionWaitTimeout : -1 
nodePolling : 5000 
nodeTimeout : 61 
port : 4444 
prioritizer : null 
remoteControlPollingIntervalInSeconds : 180 
role : hub 
servlets : [] 
sessionMaxIdleTimeInSeconds : 240 
throwOnCapabilityNotPresent : true 
timeout : 59000 

sto utilizzando Selenio 2.45

+0

Ciao, posso chiederti come hai trovato tutti questi parametri? Non riesco a vedere molti di quelli menzionati nella documentazione. Grazie! –

+0

Buona domanda. Non penso sia ben documentato. Ho appena usato file predefiniti da Selenio: https://github.com/SeleniumHQ/selenium/tree/master/java/server/src/org/openqa/grid/common/defaults – Slavik

risposta

7

ho finalmente capito che fuori!

La soluzione è in realtà molto semplice: i nodi devono essere riavviati dopo la modifica della configurazione sull'hub.

realtà non è ovvio:

Quando ho cambiato configurazione sul mozzo, poi riavviata. Il nodo si registrerebbe nuovamente con l'hub automaticamente. Poi guardando la console, posso vedere i nuovi parametri di configurazione che entrano in vigore. Ancor di più, mentre guardo le configurazioni dei nodi, vedo gli stessi parametri modificati sui nodi. Questo è fuorviante! Perché anche se i nodi sono stati nuovamente registrati, ma la loro configurazione NON è stata modificata. Cambia solo quando viene riavviato anche il nodo. Penso che questo sia il bug del selenio - il nodo dovrebbe essere riconfigurato durante la ri-registrazione.

+1

Creato rapporto Selenio bug: https : //github.com/SeleniumHQ/selenium/issues/374 – Slavik

+0

@ Slavik, ho usato per riavviare il mio nodo ogni giorno anche se non ci sono cambiamenti in Hub.Anche così sto ottenendo questo eliminato a causa del timeout del client. Come procedere. – Madhu

+0

Consiglierei di fare questa domanda in una discussione separata. Posso pensare di aumentare i timeout. Un'altra soluzione potrebbe essere quella di inviare eventi KeepAlive. – Slavik

0
C# 

driver = new RemoteWebDriver(new Uri("http://host:4444/wd/hub"), capabilities); 
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(desired_time)); 

P.S. Uso la griglia Selenium 2.53 e firefox 46.0

+0

La tua risposta riguarda uno dei timeout dei driver piuttosto che il timeout della griglia di selenio. – Gucu112

Problemi correlati