8

Unsere CI-Tests schlagen nach dem Zufallsprinzip mit Fehler "Chrome nicht erreichbar" fehl. Anfangs waren sie ziemlich selten, aber als unsere Testbasis wächst, ist sie unerträglich geworden. Es gibt einige andere Fragen/Bug-Berichte darüber, aber keine davon scheint sich auf unseren Fall zu beziehen.Webdriver produziert nach dem Zufallsprinzip "Chrome nicht erreichbar" bei Linux-Tests

Die Tests werden mit Gurke + Ruby + Watir-Webdriver + Selenium-Webdriver (neueste Versionen jedes Edelsteins) geschrieben. Wir führen die Tests auf Ubuntu Linux 12.04 im Headless-Modus unter Verwendung von xvfb auf physischer Hardware durch (keine Virtualisierung). Ich kann es ziemlich zuverlässig auf meinem Laptop mit Linux Mint 16 reproduzieren. Wir führen die Tests parallel durch, um die Dinge zu beschleunigen.

Ich habe versucht, Chromium 18.0.1025.151 ~ r130497-0ubuntu1 und Google Chrome 34.0.1847.116 mit ChromeDriver v2.9.248304 zu verwenden. Dasselbe Problem ist bei älteren Versionen des Browsers und ChromeDriver ebenfalls aufgetreten.

In der Regel werden mehrere Tests hintereinander aufgrund desselben Fehlers fehlgeschlagen, und dann wird erneut mit einem späteren Test während desselben Laufs begonnen.

Der Stack-Trace ist:

chrome not reachable 
    (Session info: chrome=34.0.1847.116) 
    (Driver info: chromedriver=2.9.248304,platform=Linux 3.2.0-60-generic x86_64) (Selenium::WebDriver::Error::WebDriverError) 
    /home/weller/jenkins/workspace/TEST_CHROME_C/server/cucumber/support/step_support/browsers.rb:14:in `goto' 
    /home/weller/jenkins/workspace/TEST_CHROME_C/server/cucumber/support/step_support/browsers.rb:35:in `blank_page' 
    /home/weller/jenkins/workspace/TEST_CHROME_C/server/cucumber/support/step_support/browsers.rb:44:in `add_cookie' 
    ./features/support/mocking.rb:11:in `mock' 
    ./features/support/time_steps.rb:5:in `/^the current time zone is "(.*?)"$/' 
    features/trackers/mood/mood_data_entry.feature:7:in `And the current time zone is "GMT+4"' 

Update: Das Problem scheint auf die Parallelität zusammenzuhängen. Wenn einer der Tests beendet wird, besteht die Möglichkeit, dass ein anderer Fehler mit "Chrome nicht erreichbar" auftritt. Wenn ich am Ende der Tests eine Verzögerung hinzufüge, sodass alle Tests abgeschlossen sind, bevor Chrome-Fenster geschlossen werden, werden die Tests problemlos ausgeführt. I reported a bug gegen ChromeDriver über das Problem.

+0

Intermittierend bedeutet normalerweise, dass Ihr Netzwerk zeitweise Probleme hat. Haben Sie versucht, an jedem am Test beteiligten Computer in einer separaten Eingabeaufforderung einen ping -t www.google.com-Befehl auszuführen? Als ich das ausprobierte, bekam ich meistens unerreichbare Probleme, aber auch Verbindungsprobleme. – gorbysbm

+0

Das Problem tritt in unserem lokalen Netzwerk auf, daher bezweifle ich, dass die Netzwerkverbindung das Problem ist. Ich werde Ping Polling nur hinzufügen, um sicher zu sein. Das Problem ist erheblich schlimmer geworden, nachdem wir unsere Tests parallelisiert haben (verschiedene Tests werden in separaten Headless-Chrome-Instanzen ausgeführt). – Sampo

+0

Ich meinte eigentlich lokales Netzwerk. Es ist sehr gut möglich, Internetprobleme in Ihrer eigenen Firma zu haben ... Was ich nicht herausfinden konnte, ist eine beste Lösung, wenn das passiert ist. Wenn du etwas herausgefunden hast, poste bitte etwas Code :) – gorbysbm

Antwort

0

Sie können mit folgenden Optionen versuchen,

1) Lauf nicht viele Jenkins Jobs paralelly 2) Versuchen weniger Threads zu verwenden, statt mehr Threads Browser zu erstellen.

Es wird Ihr Problem lösen.

In Fall, wenn Sie mehr Tests haben, sollten Sie Selenraster implementieren.

1

Ich hatte das gleiche Problem, in meinem Fall war es, weil Benutzer-Daten-Verzeichnis, das zufällig von chromedriver erstellt wurde, in einigen Fällen für mehrere Tests identisch war. Ich löste es, indem ich die Erstellung des Webdrivers synchronisierte (die Leistung ist davon nicht betroffen)

Verwandte Themen