Der Weg zur Erleuchtung begann mit dem Versuch, das Problem einzugrenzen.
Zumindest müssen diese Teile funktionieren, damit die Skripts ausgeführt werden können:
- Selen und Freunde (
webdriverio
, ChromeDriver usw.) - Chrome und Abhängigkeiten müssen installiert sein
- Xvfb muss funktionieren
- Chrome muss auf Xvfb laufen
- Chrome muss irgendwie auf Xvfb laufen, wenn es durch Selenium ausgelöst wird
Um es selenium-standalone start
durchzuarbeiten : Der schien fehlerfrei zu funktionieren, also war 1 OK. 2, 3 und 4 schienen gut zu funktionieren xvfb-run google-chrome --disable-gpu
. Nicht sicher über 5 ...
Ein Zeiger, der in die Richtung der Kombination von Chrome + Selen zeigte, funktionierte nicht in einer Zeile in der Ausgabe:
Chrome failed to start: exited abnormally
Wir wissen, dass Chrome funktioniert, wenn X installiert ist. Wir wissen, dass Chrome fehlschlägt, wenn X nicht vorhanden ist.
Um 5 zum Laufen zu bringen, musste ich Xvfb irgendwie in den Mix einspritzen, was mir zwei Möglichkeiten gab. Umschließen Sie entweder den Knotenprozess oder den Selenprozess. Der erste hat nicht funktioniert, der zweite aber!
In einem Terminal:
xvfb-run selenium-standalone start
Im zweiten Terminal:
node /tmp/script.js
Und endlich bekam ich die richtige Antwort
init ok Title is: DuckDuckGo
Einige zusätzliche Debugging-Hilfe beim Einrichten dieses Problems
Es lohnt sich, die Ausnahmestapelspuren von Selenium durchzusehen, wenn Sie versuchen, das zu debuggen, was falsch ist.
Sie können sicher sein, dass Sie Chrome vermissen oder nicht installiert sind, wenn Sie dies erhalten
Caused by: org.openqa.selenium.WebDriverException: unknown error: cannot find Chrome binary (Driver info: chromedriver=2.30.477691 (6ee44a7247c639c0703f291d320bdf05c1531b57),platform=Linux 3.16.0-4-amd64 x86_64) (WARNING: The server did not provide any stacktrace information)
Wenn Sie nicht über die richtige Version von Chrome für Chromedriver verfügen, wenn Sie beispielsweise nur Chromium installiert haben (mein Fall!), Wird dieser Fehler angezeigt:
Caused by: org.openqa.selenium.SessionNotCreatedException: session not created exception: Chrome version must be >= 58.0.3029.0 (Driver info: chromedriver=2.30.477691 (6ee44a7247c639c0703f291d320bdf05c1531b57),platform=Linux 3.16.0-4-amd64 x86_64) (WARNING: The server did not provide any stacktrace information)
Stellen Sie sicher, dass google-chrome-stable
es sich in dem befindet $PATH
und dass Sie es erfolgreich auf einem Headless-System ausführen können.
Weitere Tipps zum Setup Schauen Sie sich dieses automatisierte Setup an . Viele nette Hinweise.