Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Firefox Automation failed

Forumthread: Firefox Automation failed

Firefox Automation failed
09.06.2019 21:42:24
Marc
Hallo Forumsgemeinde,
da Yahoo-Finance seit heute aus mir unerfindlichen Gründen bestimmte Inhalte im IE 11 nicht mehr anzeigen will muss ich meine Webscraper nun umschreiben auf Firefox (Version 67.0.1 / 64 Bit).
Ich habe also Selenium installiert (Selenium Basic 2.0.9.0)und ich habe das Selenium IDE Add-on für Firefox installiert.
Mit folgendem Code möchte ich nun via VBA den Browser (Firefox Version 67.0.1 / 64 Bit)steuern aber es will nicht klappen:
Sub AutomateFirefox()
Dim driver As New FirefoxDriver
driver.Get "https://www.google.com"
driver.Window.Maximize
End Sub
Ich habe in verschiedenen Foren bereits gelesen, dass es Probleme geben kann wenn der Treiber und die Browser-Version nicht zusammen passen aber ich habe keine Ahnung ob das wirklich das Problem ist und welche Versionen zusammen laufen.
Ich bekomme folgende Fehlermeldung:
Firefox failed to open the Listening Port 127.0.0.1 ... 
Hat jemand eine Ahnung welche Versionen zu empfehlen sind oder wo das Problem liegt? Ich würde ggf. auch auf Chrome umsteigen, Hauptsache ich habe einen Browser, den ich via VBA steuern kann.
Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Firefox Automation failed
09.06.2019 22:07:46
Marc
Nachtrag: Ich bin nun etwas schlauer geworden und habe herausgefunden, dass Firefox seit Version 55 nicht mehr mit Selenium kompatibel ist aufgrund von Anpassungen in Firefox. Der neue Treiber namens "Marionette" wird von Selenium wohl nicht unterstützt.
Allerdings funktioniert der oben genannte Code auch mit Google Chrome nicht wenn ich statt dem FireFoxdriver den ChromeDriver benutze.
Folgende Fehlermeldung erscheint:
Userbild
Wieso funktioniert der Zugriff auf Chrome ebenfalls nicht? Gab es hier ebenfalls Anpassungen?
Ich wäre glücklich über einen Tipp mit was ich arbeiten kann denn der IE fällt von nun an vollständig aus zum Webscrapen.
Weiß jemand wie man den Marionette Driver von Firefox über VBA ansprechen kann?
Anzeige
AW: Firefox Automation failed
10.06.2019 08:54:18
Martin
Hallo Marc,
ich finde es auch sehr schade, dass die Browser-Ansteuerung immer schwieriger wird und teilweise überhaupt nicht mehr mit VBA möglich ist. Früher konnte über der Microsoft Internet Explorer sehr bequem über die Objekt-Bibliothek angesteuert werden, aber beim Nachfolger-Browser Microsoft Edge geht das nicht mehr. Bei FireFox geht nun Selenium nicht mehr. Die einzige Möglichkeit an Daten aus Websites noch heranzukommen ist das direkte Auslesen und Auswerten des Quellcodes. Aber durch moderne Webtechnologien wie AJAX ist es nun auch hier teilweise unmöglich an Daten heranzukommen, die erst durch Interaktionen mit der Website nachgeladen werden werden.
Viele Grüße
Martin
Anzeige
AW: Firefox Automation failed
10.06.2019 10:12:22
Marc
Hallo Martin,
was meinst Du mit "den Quellcode direkt auslesen"? Ist der Quellcode nicht der HTML-Code? Und lesen wir mit VBA üblicherweise nicht den Quellcode aus?
Wie sieht es denn mit Chrome aus? Weshalb lässt sich das nicht mehr über Selenium steuern?
VG,
Marc
AW: Firefox Automation failed
10.06.2019 10:58:43
Martin
Hallo Marc,
ja klar kann der Quellcode recht einfach ausgelesen werden:

Sub ShowSourceCode()
Debug.Print URLGet("https://www.google.de")
End Sub
Function URLGet(URL)
Dim HTTP As Object
Set HTTP = CreateObject("MSXML2.ServerXMLHTTP.6.0")
HTTP.Open "GET", URL, False
HTTP.Send
URLGet = HTTP.responseText
End Function
Aber muss du den ganzen Code auswerten um an die gewünschten Informationen heranzukommen. Damals beim Internet Explorer konntest du via Objektbibliothek direkt die Objekte (Tables, Formularfelder usw.) ansprechen und mit der Website interagieren (Formulare absenden und das Ergebnis auswerten).
Viele Grüße
Martin
Anzeige
AW: Firefox Automation failed
10.06.2019 11:08:51
Marc
@Martin,
ich gehe davon aus was Du da beschreibst stellt einen sogenannten HTTP-Request dar. Grundsätzlich stellt sich mir die Frage ob ich mit Hilfe eines solchen alle Elemente einer HTTP-Dom Struktur ansprechen kann, so wie zuvor mit Hilfe des Internet Explorer. Ist das möglich?
Übrigens, "damals" ist bei mir genau zwei Tage her. Da hat alles noch einwandfrei funktioniert. =D
Gruß,
Marc
Anzeige
AW: Firefox Automation failed
10.06.2019 11:44:39
Martin
Hallo Marc,
falls du noch den alten Internet Explorer installiert haben solltest, dann setze in der VBA-Umgebung einen Verweis auf "Microsoft Internet Controls" und "Microsoft HTML Object Library" (ich arbeite bevorzugt mit Early Binding statt Late Binding) und siehe mit der Funktionstaste "F2" unter "MSHTML" in die Objektbibliothek. Da findest du die von dir bezeichneten "Elemente einer HTTP-Dom Struktur".
Das war noch ein bwequemes Arbeiten...
Ich bin nur auf Firefox und Selenium ausgewichen, wenn der Internet Explorer mit einer Website nicht klargekommen ist.
Mit Chrome habe ich in Verbdindung mit VBA noch nie gearbeitet, da fehlt mir die Erfahrung.
Die von dir bezeichneten "Elemente" im per HTTP-Request ausgelesenen Quellcode kannst du nur ansprechen, wenn du diesen unter Verwendung der "Microsoft HTML Object Library" einem HTMLDocument zuweist.
Viele Grüße
Martin
Anzeige
AW: Firefox Automation failed
10.06.2019 11:54:56
Marc
@Martin:
Ich interpretiere das hoffentlich richtig. Man kann also den Quellcode (die DOM-Struktur der Seite) mit Hilfe eines HTTP-Request genauso einem MSHTMLDocument zuweisen wie man das mit Hilfe des Internet Explorer zuvor auch tun konnte?
VG,
Marc
AW: Firefox Automation failed
10.06.2019 12:22:24
Martin
Hallo Marc,
ja, genau das meinte ich. Hab mal schnell gegoogelt, hier scheint es auf den ersten Blick ganz gut beschrieben zu sein:
https://www.ozgrid.com/forum/forum/tip-tricks-code/131943-vba-retrieve-internet-explorer-html-web-table
Mit Hilfe des Forenarchivs und Google wirst du garantiert noch zahlreiche Infos finden. Ich muss jetzt leider los und bin frühstens am späten Abend wieder online.
Viel Erfolg!
Martin
Anzeige
AW: Firefox Automation failed
12.06.2019 07:23:14
Martin
Hallo Marc,
und, hat du es hinbekommen? Rückmeldung wäre auch für andere Forenmitglieder nett!
Viele Grüße
Martin
AW: Firefox Automation failed
12.06.2019 07:47:42
Marc
Guten Morgen Martin,
ich kam leider nicht dazu bis jetzt aber Du bekommst auf jeden Fall noch Rückmeldung.
Was ich bis jetzt auf jeden Fall gelernt hab ist, dass man via Http Request alles in ein Objekt packen kann was man vorher im Browser als Link öffnen konnte. Somit sollte der Http Request mein Makro retten.
Soweit schonmal ganz herzlichen Dank.
Beste Grüße,
Marc
Anzeige
AW: Firefox Automation failed
15.06.2019 10:23:29
Hajo_Zi
Hallo Marc,
offen bedeutet es soll noch eine Antwort kommen.
Warum ist dein Beitrag Offen.
Du willst doch was machen. Soll jemand vorbei kommen?

AW: Firefox Automation failed
15.06.2019 10:55:22
Marc
Hallo Hajo,
ich habe leider nicht immer Zeit die Tipps sofort in die Tat umzusetzen, hatte aber bereits auf Martin's Nachricht mitgeteilt, dass auf jeden Fall eine Antwort kommt sobald ich soweit bin.
Sollte kein Problem sein oder?
Danke für Dein Verständnis und Gruß,
Marc
Anzeige
AW: Firefox Automation failed
15.06.2019 11:03:18
Hajo_Zi
da hast Du aber ein Problem, da morgen der Beitrag aus dem FGorum ist vermute ich mal.
Gruß Hajo
AW: Firefox Automation failed
15.06.2019 12:25:11
Marc
Und woran liegt das? Gibt es eine Zeitvorgabe wie lange ein Beitrag offen sein darf ohne Antwort?
Programmieren ist eine zeitintensive Sache, wie jeder hier weiß. Und als Berufstätiger hab ich nicht die Zeit permanent an meinem Code zu arbeiten.
Gruß,
Marc
Anzeige
AW: Firefox Automation failed
15.06.2019 12:32:37
Hajo_Zi
Hallo Narc,
die Regel hat der Forumsbetreiber festgelegt. Wie Du Antworten kannst, wenn Beitrag aus dem Forum ist kennst Du ja, da Du nach 6 Tagen Rückmeldung gibst.
Gruß Hajo
;
Anzeige

Infobox / Tutorial

Firefox Automation mit VBA: Probleme und Lösungen


Schritt-für-Schritt-Anleitung

  1. Selenium Basic installieren: Stelle sicher, dass du Selenium Basic 2.0.9.0 installiert hast. Dies ist notwendig für die Browser-Automatisierung mit VBA.

  2. Firefox und den Marionette Driver: Achte darauf, dass du die korrekte Version von Firefox (z.B. 67.0.1) und den passenden Marionette Driver installiert hast. Dieser ist entscheidend für die Integration von Selenium mit Firefox.

  3. VBA-Projekt vorbereiten: Öffne Excel, gehe zu den Entwicklertools und öffne den VBA-Editor. Füge Referenzen zu Selenium Type Library hinzu.

  4. VBA-Code schreiben: Verwende folgenden Code, um den Firefox-Browser zu steuern:

    Sub AutomateFirefox()
       Dim driver As New FirefoxDriver
       driver.Get "https://www.google.com"
       driver.Window.Maximize
    End Sub
  5. Fehlermeldungen prüfen: Achte darauf, ob Fehlermeldungen wie Firefox failed to open the Listening Port auftreten. Dies könnte auf ein Versionsproblem hinweisen.


Häufige Fehler und Lösungen

  • Problem: Firefox failed to open the Listening Port

    • Lösung: Überprüfe die Kompatibilität zwischen Firefox und dem Marionette Driver. Stelle sicher, dass du die richtige Version verwendest.
  • Problem: Selenium funktioniert nicht mit Chrome.

    • Lösung: Stelle sicher, dass du den ChromeDriver installiert hast und dass die Versionen von Chrome und ChromeDriver übereinstimmen.
  • Problem: Zugriff auf Elemente in einer DOM-Struktur ist nicht möglich.

    • Lösung: Nutze HTTP-Requests, um die HTML-Daten zu extrahieren und mit Microsoft HTML Object Library zu arbeiten.

Alternative Methoden

Neben der Verwendung von Selenium gibt es auch andere Ansätze zur Browser-Automatisierung:

  • VBA HTTP-Requests: Du kannst die Funktion URLGet verwenden, um den Quellcode einer Seite abzurufen. Hier ein Beispiel:

    Function URLGet(URL)
       Dim HTTP As Object
       Set HTTP = CreateObject("MSXML2.ServerXMLHTTP.6.0")
       HTTP.Open "GET", URL, False
       HTTP.Send
       URLGet = HTTP.responseText
    End Function
  • Webscraping ohne Selenium: Mit der Microsoft HTML Object Library kannst du direkt auf die DOM-Struktur zugreifen, anstatt den Browser zu steuern.


Praktische Beispiele

Hier ist ein Beispiel, wie du den Quellcode einer Webseite mit HTTP-Requests abrufen und analysieren kannst:

Sub ShowSourceCode()
    Debug.Print URLGet("https://www.google.de")
End Sub

Diese Methode ist nützlich, wenn du Informationen von Webseiten extrahieren möchtest, die nicht durch AJAX oder andere moderne Technologien geladen werden.


Tipps für Profis

  • Versionen im Auge behalten: Halte sowohl deinen Browser als auch die Treiber auf dem neuesten Stand, um Kompatibilitätsprobleme zu vermeiden.
  • Verwendung von Microsoft Internet Controls: Wenn du den alten Internet Explorer hast, kannst du diesen weiterhin für die Automatisierung nutzen.
  • Frühzeitiges Testen: Teste deinen Code regelmäßig, um frühzeitig auf Fehler zu stoßen und diese zu beheben.

FAQ: Häufige Fragen

1. Warum funktioniert Firefox nicht mit Selenium? Selenium ist seit Firefox Version 55 nicht mehr direkt kompatibel. Der Marionette Driver muss verwendet werden.

2. Welche Alternativen gibt es zu Selenium für die Browserautomatisierung? Du kannst HTTP-Requests verwenden, um Daten zu extrahieren, oder die Microsoft HTML Object Library, um auf die DOM-Struktur zuzugreifen.

3. Wie kann ich den Chrome-Browser mit VBA automatisieren? Stelle sicher, dass du den korrekten ChromeDriver installiert hast und dass die Versionen von Chrome und dem Driver übereinstimmen. Verwende dann den ChromeDriver in deinem VBA-Code.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige