simple - selenium grid webdriver example
¿Cómo aumentar el tiempo de espera de la sesión de grilla de Selenio? (2)
¡Finalmente lo resolví!
La solución es realmente muy fácil: los nodos deben reiniciarse después de que se haya cambiado la configuración en el concentrador.
No es realmente obvio:
Cuando cambié la configuración en el hub, lo reinicié. El nodo se volvería a registrar con el concentrador automáticamente. Luego, mirando la consola, puedo ver que los nuevos parámetros de configuración entran en vigencia. Aún más, cuando miro las configuraciones de nodos, veo los mismos parámetros cambiados en los nodos. Eso es engañoso! Porque aunque los nodos se vuelvan a registrar, pero su configuración NO ha sido modificada. Solo cambia cuando el nodo se reinicia también. Creo que este es un error de Selenium: el nodo debería volver a configurarse durante el nuevo registro.
Mientras ejecuto mi prueba, necesito tener largas demoras (~ 40 segundos).
Y veo, esa sesión de Selenium se elimina durante ese tiempo.
Ayuda: ¿Cómo puedo configurar el tiempo de espera de la sesión para aumentar?
Aquí lo que veo en menos, ese 30 segundos, después de la demora comenzó en el registro de nodo de Selenium:
INFO org.openqa.selenium.remote.server.DriverServlet - Se eliminó la sesión 7f5fffec-4882-4c4c-b091-c780c66d379d debido al tiempo de espera del cliente
Y después de 40 segundos de sueño, obtengo esta excepción en mi código:
org.openqa.selenium.remote.SessionNotFoundException
Traté de aumentar todos los tiempos de espera posibles. Aquí es cómo comienzo el eje:
java -jar selenium-server-standalone.jar -role hub
-hubConfig selenium_hub.json
-nodeTimeout 61
-remoteControlPollingIntervalInSeconds 180
-sessionMaxIdleTimeInSeconds 240
-newSessionMaxWaitTimeInSeconds 250
-timeout 59
Y aquí está 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
}
No hay tiempos de espera configurados en los nodos. Esto es lo que veo en mi consola de Grid:
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
Estoy usando Selenio 2.45
C#
driver = new RemoteWebDriver(new Uri("http://host:4444/wd/hub"), capabilities);
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds( desired_time ));
PD: estoy usando Selenium grid 2.53 y firefox 46.0