Lors de l'exécution de mon test, j'ai besoin de longs délais (~ 40 secondes).
Et je vois, cette session de sélénium est supprimée pendant cette période.
Aide s'il vous plaît: Comment puis-je configurer le délai d'expiration de session pour augmenter?
Voici ce que je vois en moins de 30 secondes après le début du délai dans le journal du nœud Selenium:
Org.openqa.Selenium.remote.server.DriverServlet - Session 7f5fffec-4882-4c4c-b091-c780c66d379d supprimée en raison du délai d'attente du client
Et après 40 secondes de sommeil, je reçois cette exception dans mon code:
org.openqa.Selenium.remote.SessionNotFoundException
J'ai essayé d'augmenter tous les délais d'attente possibles. Voici comment je démarre hub:
Java -jar Selenium-server-standalone.jar -role hub
-hubConfig Selenium_hub.json
-nodeTimeout 61
-remoteControlPollingIntervalInSeconds 180
-sessionMaxIdleTimeInSeconds 240
-newSessionMaxWaitTimeInSeconds 250
-timeout 59
Et voici 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
}
Non, aucun délai d'attente configuré sur les nœuds. Voici ce que je vois dans ma console de grille:
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
J'utilise Selenium 2.45
Je l'ai finalement compris!
La solution est en réalité très simple: les nœuds doivent être redémarrés une fois la configuration modifiée sur le concentrateur.
Ce n'est pas vraiment évident:
Quand j'ai changé de configuration sur le hub, je l'ai redémarré. Le nœud se ré-enregistrerait automatiquement avec le hub. En regardant ensuite la console, je peux voir de nouveaux paramètres de configuration entrer en vigueur. Plus encore, lorsque je regarde les configurations de nœuds, je vois les mêmes paramètres modifiés sur les nœuds. C'est trompeur! Parce que même si les nœuds sont réenregistrés, leur configuration n'a PAS été modifiée. Cela ne change que lorsque le nœud est redémarré. Je pense qu’il s’agit d’un bogue Selenium - le nœud doit être reconfiguré lors de la réinscription.
C#
driver = new RemoteWebDriver(new Uri("http://Host:4444/wd/hub"), capabilities);
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds( desired_time ));
P.S. J'utilise Selenium grid 2.53 and firefox 46.0