2015-03-26 26 views
10

Podczas wykonywania testu muszę mieć duże opóźnienia (~ 40 sekund).Jak zwiększyć limit czasu sesji selenu?

I widzę, że sesja Selenium zostanie usunięta w tym czasie.

Proszę pomóc: Jak mogę skonfigurować limit czasu sesji, aby zwiększyć?

Oto, co widzę w mniej, 30 sek, po zwłoka rozpoczęła się w dzienniku węzła Selen:

INFO org.openqa.selenium.remote.server.DriverServlet - Sesja 7f5fffec-4882-4c4c -b091-c780c66d379d usunięte z powodu przekroczenia limitu czasu klienta

i po 40 sekund snu, dostaję ten wyjątek w moim kodu:

org.openqa.selenium.remo te.SessionNotFoundException

Próbowałem zwiększyć wszystkie możliwe limity czasu. Oto jak zacznę piasta:

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

A oto 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 
} 

Brak wszelkie limity czasu skonfigurowane na węzłach. Oto, co widzę w moim konsoli 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 

Używam Selen 2,45

+0

Witam, czy mogę zapytać, skąd brałeś te wszystkie parametry? Nie widzę wielu z nich wymienionych w dokumentacji. Dzięki! –

+0

Dobre pytanie. Nie sądzę, że jest dobrze udokumentowana. Właśnie używane pliki domyślne z Selen: https://github.com/SeleniumHQ/selenium/tree/master/java/server/src/org/openqa/grid/common/defaults – Slavik

Odpowiedz

7

końcu zorientowaliśmy się!

Rozwiązanie jest rzeczywiście bardzo proste: węzły należy zrestartować po zmianie konfiguracji w hoście.

To naprawdę nie jest oczywista:

Kiedy zmienił konfigurację na piaście, a potem ponownie uruchomić go. Węzeł automatycznie rejestruje się w centrum. Patrząc na konsolę, widzę, że nowe parametry konfiguracyjne zaczynają działać. Co więcej, gdy patrzę na konfiguracje węzłów, widzę te same parametry zmienione w węzłach. To wprowadza w błąd! Ponieważ chociaż węzły zostały ponownie zarejestrowane, ale ich konfiguracja NIE została zmieniona. Zmienia się tylko wtedy, gdy węzeł jest ponownie uruchamiany. Myślę, że to błąd selenu - węzeł powinien zostać ponownie skonfigurowany podczas ponownej rejestracji.

+1

Utworzony raport Selen bug: https : //github.com/SeleniumHQ/selenium/issues/374 – Slavik

+0

@ Slavik, kiedyś zrestartowałem mój węzeł, nawet jeśli nie ma zmian w Hub.Mimo to otrzymuję to usunięte z powodu czasu oczekiwania klienta. Jak kontynuować. – Madhu

+0

Polecam zadać to pytanie w osobnym wątku. Mogę wymyślić zwiększenie limitów czasu. Innym rozwiązaniem byłoby wysyłanie zdarzeń 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. Używam siatki Selenium 2.53 i firefox 46.0

+0

Twoja odpowiedź dotyczy limitu czasu sterownika, a nie limitu czasu sieci Selenium. – Gucu112

Powiązane problemy