ChromeDriver: Abruf mit PPA-Chromium schlägt fehl / Option zum Einstellen des Pfads

Hier darf jeder ein Thema erstellen das nicht zu den Support-Themen passt
stoo
Beiträge: 15
Registriert: Fr 30. Sep 2016, 09:46

ChromeDriver: Abruf mit PPA-Chromium schlägt fehl / Option zum Einstellen des Pfads

Beitrag von stoo » Sa 8. Aug 2020, 21:29

Hallo,

bei mir schlägt leider der Abruf bei der DKB fehl, obwohl es sich bei dem installierten Chromium um die aktuelle Version handelt (Monitor-Log unten).

-Sofern Chromium systemseitig installiert ist ["Launching chrome: /snap/bin/chromium ..." im chromedriver.log], gibt es bei Mashup den beschriebenen Fehler. Das Problem ist vermutlich, dass das Zusammenspiel von Selenium und Snap nicht richtig funktioniert (zumindest wird hier https://github.com/SeleniumHQ/selenium/issues/7788 ein ähnliches Problem beschrieben).
- Sofern Chromium deinstalliert ist ["Launching chrome: /home/stoo/.chrome-headless/chrome-linux/chrome ..." im chromedriver.log], verwendet Mashup die Fallback-Option und installiert Chromium selbst. Das funktioniert, allerdings würde ich trotzdem gerne Chromium auf meinem System nutzen.

Mein Frage wäre daher, ob es möglich wäre, eine durch den Benutzer konfigurierbare Option einzufügen, mithilfe derer der Pfad zu dem zu verwendenden ChromeDriver eingestellt werden kann. Dann könnte man die Chromium über Snap installiert haben und zusätzlich für Mashup einen von der Snap-Version verschiedenen ChromeDriver einstellen. Mir persönlich würde hier schon eine Kommandozeilenoption oder Java-System-Property ohne aufwändige GUI helfen.

Code: Alles auswählen

[08.08.2020 21:09:12] Synchronisierung via non-HBCI (Hibiscus Mashup) läuft
[08.08.2020 21:09:12]  
[08.08.2020 21:09:12] System-Info: OS[Linux (ver. 5.4.0-42-generic) amd64]  Platform[Jameica 2.8.6 | Build: 455 vom 20191101]  Plugin[hibiscus 2.8.24 | Build: 388 vom 20200708]
[08.08.2020 21:09:12] Installierte und aktive Plugin-Versionen: [Finance.Websync ver. 0.9.14 | Build: 617 vom 20200729] [Hibiscus Mashup ver. 0.9.12 | Build: 387 vom 20200602]
[08.08.2020 21:09:12] Überprüfe Java-Version und den verwendeten Zeichensatz ...
[08.08.2020 21:09:12] OK: Java-Version 1.8.0_265 von 'Private Build' installiert, aktiv und verwendet Zeichensatz 'UTF-8' (Home: /usr/lib/jvm/java-8-openjdk-amd64/jre)
[08.08.2020 21:09:12] Überprüfe Selenium-Version ...
[08.08.2020 21:09:12] OK: Selenium-Version 3.141.59 installiert und aktiv
[08.08.2020 21:09:12] Überprüfe ChromeDriver-Version ...
[08.08.2020 21:09:12] OK: ChromeDriver-Version 84.0.4147.30 installiert und aktiv
[08.08.2020 21:09:12]  
[08.08.2020 21:09:12] Synchronisiere Konto 'DKB TG, IBAN DE6312..999333 [Deutsche Kr...ank Berlin]' ...
[08.08.2020 21:09:12] Selenium WebDriver über ChromeDriver wird gestartet ...
[08.08.2020 21:10:13] Hinweis: Chrome gefunden. Alternativer Chromium wird daher nun wieder entfernt ...
[08.08.2020 21:10:13] Fehler: SeleniumWebDriverInit fehlerhaft: Erstellen des WebClient fehlgeschlagen!
Stacktrace: java.lang.Exception: org.openqa.selenium.WebDriverException: unknown error: DevToolsActivePort file doesn't exist
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:48'
System info: host: 'hostname', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '5.4.0-42-generic', java.version: '1.8.0_265'
Driver info: driver.version: ChromeDriver
remote stacktrace: #0 0x55dcd1767ea9 <unknown>

	at de.derrichter.finance.websync.connector.ChromeDriverWebClientInit.connConfig(ChromeDriverWebClientInit.java:745)
	at de.derrichter.hibiscus.mashup.crossover.websync.institute.dkbvisa.Collector.run(Collector.java:169)
	at de.derrichter.hibiscus.mashup.crossover.websync.WebSynchronizeJobKontoauszug.execute(WebSynchronizeJobKontoauszug.java:74)
	at de.derrichter.hibiscus.mashup.crossover.websync.WebSynchronizeBackend$WebSyncJobGroup.sync(WebSynchronizeBackend.java:619)
	at de.willuhn.jameica.hbci.synchronize.AbstractSynchronizeBackend$Worker.run(AbstractSynchronizeBackend.java:407)
	at de.willuhn.jameica.gui.GUI$7.run(GUI.java:1069)
Caused by: org.openqa.selenium.WebDriverException: unknown error: DevToolsActivePort file doesn't exist
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:48'
System info: host: 'hostname', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '5.4.0-42-generic', java.version: '1.8.0_265'
Driver info: driver.version: ChromeDriver
remote stacktrace: #0 0x55dcd1767ea9 <unknown>

	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$errorHandler$0(W3CHandshakeResponse.java:62)
	at org.openqa.selenium.remote.HandshakeResponse.lambda$getResponseFunction$0(HandshakeResponse.java:30)
	at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:126)
	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
	at java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958)
	at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
	at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:499)
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:486)
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
	at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152)
	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:531)
	at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:128)
	at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:74)
	at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136)
	at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
	at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:213)
	at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
	at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:181)
	at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:168)
	at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:157)
	at de.derrichter.finance.websync.connector.ChromeDriverWebClientInit.connConfig(ChromeDriverWebClientInit.java:581)
	... 5 more

Benutzeravatar
Hibiscus-Scripter
Administrator
Administrator
Beiträge: 1590
Registriert: Mi 30. Okt 2013, 17:14
Wohnort: Würzburg

ChromeDriver: Abruf mit PPA-Chromium schlägt fehl / Option zum Einstellen des Pfads

Beitrag von Hibiscus-Scripter » Sa 15. Aug 2020, 19:21

Hallo,

danke für die ordentliche Meldung mit der vollständigen Monitor-Log :thumbup:

Der ChromeDriver muss seit einiger Zeit immer genau zur verwendeten Chrome bzw. Chromium-Version passen.
Die Build-Nummer um den richtigen Snapshot von Chromium zu laden kann man z. B. hier nachsehen https://chromium.woolyss.com
Dann muss natürlich auch das richtige Paket unter https://commondatastorage.googleapis.co ... index.html geladen werden.
Ansonsten kommt es zu dem von dir unterlaufenden Fehler:

Code: Alles auswählen

DevToolsActivePort file doesn't exist
Der ChromeDriver sucht immer unter dem Standard-Installationspfad von Chrome nach der Binary.
Wird dieser dort nicht gefunden dann wird automatisch vom Plugin der Chromium-Snapshot nachgeladen und als ChromeDriver-Option gesetzt.

Was jetzt bei den Linux-Paketanbietern bei deren Version von Chromium fehlt kann ich natürlich nicht sagen und ist auch nicht meine Baustelle.
Mit dem manuell geladenen gehts jedenfalls einwandfrei.
Dieser sollte dann eben am besten aus meiner Sicht einfach im Pfad des originalen Chrome von Google liegen, dann wird dieser gefunden und sollte verwendet werden.

Das setzen einer Java-Property ist zwar sogar notwendig bei einem manuellem Pfad aber dieser muss zur Laufzeit der Java-Umgebung von Jameica gesetzt werden womit man um eine z.B. GUI-Einstellung nicht drum herum kommt.

Gruß :wave:

PS: von mir werden folgende Paket unter folgender URL genutzt
- Linux_x64 das Paket "chrome-linux.zip" (nicht x64)
- Mac das Paket "chrome-mac.zip"
- Win (nicht x64) das Paket "chrome-win.zip"
unter der jeweiligen Build-Nummer (kann aber abweichen da manche später als Stable gelten)
... wer lesen kann ist wie immer im klaren Vorteil ...

:!: Vor dem Posten: Bitte die Posting-Regeln für neue Beiträge lesen und bitte auch immer alle 4. Punkte zur Fehlermeldung beachten (Der Post wird ansonsten gelöscht)

:idea: Hilfe und Informationen zu den Test- und Nightly-Builds und deren Installation findet Ihr z. B. im Tipps und Tricks-Forum (Weitere hilfreiche Artikel findet man in der FAQ auf der Projekt-Website)

Wer ein Dankeschön für die Arbeit und Unkosten senden möchte, kann gerne auch :arrow: Spenden

stoo
Beiträge: 15
Registriert: Fr 30. Sep 2016, 09:46

ChromeDriver: Abruf mit PPA-Chromium schlägt fehl / Option zum Einstellen des Pfads

Beitrag von stoo » Sa 15. Aug 2020, 20:28

Hallo, herzlichen Dank für deine Erklärungen! Deine Ausführungen haben mich auf eine Idee gebracht. :-)

Anstatt jedes Mal Chromium zu deinstallieren und nach der Verwendung von Hibiscus wieder neu zu installieren (was immer etwas dauert), kann man einfach die Binary bzw. den Link zu der systemseitig installierten Chromium-Version verschieben / entfernen. Dann denkt Mashup, Chromium wäre nicht installiert und verwendet die Fallback-Varianten.

Wer unter Ubuntu aufgrund der Snap-Chromium-Version das gleiche Problem hat, kann ein Launcher-Skript ähnlich dem folgenden verwenden:

Code: Alles auswählen

#!/bin/bash
cd /home/stoo/Programme/Jameica;
pkexec rm /snap/bin/chromium;
./jameica.sh;
pkexec ln -s /usr/bin/snap /snap/bin/chromium;

Zurück zu „Allgemeine Diskussionen“