2016-06-28 15 views
5

Ich versuche, einen automatisierten Test für meine Webseite zu machen, und ich benutze Jasmin im Tandem mit Selen.Chromdriver2.21.2 fehlgeschlagen "keine solche Sitzung"

Beim Testen auf Chrom (mit Chrom-Treiber) bekomme ich unvorhersehbar den Fehler unten. Es passiert häufig genug, dass wenn ich eine Testsuite laufe, es fast nie endet.

Ive fand Beweise für diesen Fehler kann aber nicht eine solide Antwort finden: https://bugs.chromium.org/p/chromedriver/issues/detail?id=732 (erteilt das war für Chrom und ich bin mit Chrom)

WebDriverError: no such session 
    (Driver info: chromedriver=2.21.371459 (36d3d07f660ff2bc1bf28a75d1cdabed0983e7c4),platform=Mac OS X 10.11.5 x86_64) 
    at WebDriverError (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/error.js:27:10) 
    at Object.checkLegacyResponse (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/error.js:639:15) 
    at parseHttpResponse (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/http/index.js:538:13) 
    at /Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/http/index.js:472:11 
    at ManagedPromise.invokeCallback_ (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/promise.js:1379:14) 
    at TaskQueue.execute_ (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/promise.js:2913:14) 
    at TaskQueue.executeNext_ (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/promise.js:2896:21) 
    at /Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/promise.js:2820:25 
    at /Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/promise.js:639:7 
    at process._tickCallback (node.js:369:9) 
From: Task: WebElement.isDisplayed() 
    at Driver.schedule (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/webdriver.js:377:17) 
    at WebElement.schedule_ (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/webdriver.js:1744:25) 
    at WebElement.isDisplayed (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/webdriver.js:2110:17) 
    at driver.findElements.then.error (/Users/XXXXXXX/Documents/sweetmeeting/Test/front_end_testing/spec/dashboard_tester.js:251:34) 
    at ManagedPromise.invokeCallback_ (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/promise.js:1379:14) 
    at TaskQueue.execute_ (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/promise.js:2913:14) 
    at TaskQueue.executeNext_ (/Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/promise.js:2896:21) 
    at /Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/promise.js:2775:27 
    at /Users/XXXXXXX/Documents/sweetmeeting/node_modules/selenium-webdriver/lib/promise.js:639:7 
    at process._tickCallback (node.js:369:9) 
+0

Versuchen Sie, die neuesten [ChromeDriver 2.22] (http://chromedriver.storage.googleapis.com/index.html?path=2.22/) – Madhan

Antwort

8

Wir haben auch mit diesem Thema für eine lange zu kämpfen Zeit jetzt und vor kurzem gelöst, dachte ich, ich würde hier posten, wenn es jemand anderem hilft.

Stellt sich heraus für uns war es Speicher bezogen. Wir führen unsere Tests in einem Andock-Container aus, und die Standard-Dev/Shm-Größe des Andockers beträgt 64 MB. Durch die Erhöhung wurde das Problem "keine solche Sitzung" für uns gelöst.

Wir verwenden docker komponieren so einfach hinzugefügt shm_size: 256M der docker-compose.yml-datei.

+3

Haben Sie das gleiche Problem, zunehmende shm sogar für 2GB! mir nicht geholfen, und scheint, dass Fehler nicht durch shm Größe verursacht – ShockwaveNN

+0

Können Sie erklären, wie es mit dem Speicherlimit verwandt ist? Könnte es sein, dass der Treiber wegen zu wenig Arbeitsspeicher abgestürzt ist und dann die Selenium-Bindung nicht mehr mit ihm kommunizieren konnte? –

5

Ich bin kürzlich auch auf diese Ausnahme gestoßen. Es schien auch zunächst unbestimmbar zu sein, aber nach eingehender Untersuchung wurde mir klar, dass es deterministisch passiert, wenn Sie ChromeDriver.Close() aufrufen und dann FindElement versuchen.

In meinem Fall wurde ChromeDriver.Close() in einem Ausnahmebehandler von vorherigen-Test aufgerufen, der aufgrund eines Timing-Problems aufgetreten ist. Dies betrifft nur die nächste Test, so dass es das Gefühl hinzugefügt, dass dieses Problem flockig ist. Aber wie gesagt, meine Untersuchung ergab, dass es deterministisch ist.

Nachdem gesagt, das ist meine Erfahrung mit diesem Fehler. Könnte sein, dass Ihr Fall anders ist ...