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

Angabe Webdriverpfad Selenium

Forumthread: Angabe Webdriverpfad Selenium

Angabe Webdriverpfad Selenium
16.07.2021 10:27:05
W.Stecher
Hallo,
ich habe folgenden Code, mit dem ich über Excel und Selenium Basic den Webbrowser Chrome öffne und eine Seite aufrufe. Das funktioniert auch wunderbar, solange der Webdriver im Ordner der Selenium Installation liegt (C:\Users\\AppData\Local\SeleniumBasic)
Ich suche eine Möglichkeit im Code anzugeben, dass die "chromedriver.exe" woanders liegt, beispielsweise "D:\WebDriverTest\chromedriver.exe", habe aber trotz intensiver Recherche bisher keine Möglichkeit gefunden, die funktioniert.

Public Function Browserautomation()
Dim Driver As New ChromeDriver
Driver.Start "Chrome"
Driver.Get "http://www.google.de" End Function
Folgendes habe ich schon probiert:

Driver.SetPreference "webdriver.chrome.driver", "D:\WebDriverTest\chromedriver.exe"
Driver.Start "Chrome"
Ich bekomme aber einen FileNotFoundError "C:\Users\\AppData\Local\SeleniumBasic\chromedriver.exe"
Kennt jemand eine Möglichkeit oder hat vielleicht einen Beispielcode?
Danke.
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Angabe Webdriverpfad Selenium
16.07.2021 14:02:55
Zwenn
Hallo,
soweit ich weiß, geht das nicht. Zur Installation von SeleniumBasic inklusive WebDriver habe ich mal folgendes geschrieben:

Entzippe das Archiv chromedriver_win32.zip und kopiere den WebDriver chromedriver.exe an die richtige Stelle.
Dafür gibt es zwei Möglichkeiten:
1. C:\Program Files\SeleniumBasic
2. C:\Users\%username%\AppData\Local\SeleniumBasic
Das ist ein Auszug aus diesem Posting (Selbst habe ich mein Wissen von StackOverflow):
https://www.herber.de/forum/cgi-bin/callthread.pl?index=1831729#1831851
Mir erschließt sich der Sinn auch nicht. Um das "ganze System" nutzen zu können, muss SeleniumBasic ja sowieso zwingend installiert werden.
Viele Grüße,
Zwenn
Anzeige
AW: Angabe Webdriverpfad Selenium
16.07.2021 14:32:30
W.Stecher
Hallo Zwenn,
doch das scheint zu gehen, denn mein Beispiel ".SetPreferences" mit Treiberdateiangabe findet sich für andere Programmiersprachen zu genüge im Netz. Wäre doch merkwürdig, wenn es nur bei VBA nicht funktionieren würde.
Der Sinn ist auch durchaus gegeben, wenn man von seinem privaten Umfeld einmal weggeht und der Betrieb in einem Citrix-Umfeld stattfindet, in dem zwar Selenium, aber nicht der Webdriver zur Verfügung gestellt werden kann, was aber interne, vertragliche Gründe hat. Die Treiber müssen zwingend woanders liegen.
Gruß
W.Stecher
Anzeige
AW: Angabe Webdriverpfad Selenium
16.07.2021 15:25:45
Zwenn
Nachdem ich jetzt etwas recherchiert habe, fällt mir folgendes dazu ein:
Deine Zeile,

Driver.SetPreference "webdriver.chrome.driver", "D:\WebDriverTest\chromedriver.exe"
kann nicht funktionieren, weil SetPreference(key, value) eine Methode des WebDrivers ist, was Du auch leicht im Object Explorer nachvollziehen kannst. Auf die kannst Du also erst zugreifen, wenn der WebDriver geladen ist. Da beißt sich die Katze in den Schwanz.
In Beispielen zu anderen Programmiersprachen habe ich bisher nur gesehen, dass z.B. Java, Kotlin und Python einen Bibliotheksimport verwenden, um den WebDriver einzubinden. Klar muss bekannt sein, wo die Bibliothek liegt, aber für VBA gibt es solche Mechanismen nur in Form der Verweise. Es gibt aber keine Möglichkeit einen Verweis auf einen der WebDriver zu setzen.
Kannst Du mr mal zeigen, wo Du Deine genannten Beispiele nachgelesen hast? Ich habe direkt auf der Selenum Seite nachgesehen, aber wie gesagt, sind die nicht für VBA "zuständig". Zu SeleniumBasic habe ich dazu bisher nix gefunden:
https://www.selenium.dev/documentation/de/webdriver/driver_requirements/
Anzeige
AW: Angabe Webdriverpfad Selenium
16.07.2021 15:54:34
Zwenn
Wie vermutet funktioniert es nicht über die Programmierung selbst. Es scheint nur zu gehen, wenn die Umgebungsvariable für Pfade angepasst wird. Darauf wird auch auf der zuletzt von mir verlinkten Seite eingegangen. Allerdings bezweifle ich, dass Du auf eine Systemvariable Zugriff bekommst, wenn schon die Nutzung eines bestimmten Ordners verweigert wird.
Auf SO hatte jemand die gleiche Frage und QHaar hat geantwortet. Da ich weiß, dass QHaar sehr erfahren im gesamten Thema WebScraping ist, vertraue ich darauf, dass die Aussage stimmt:
https://stackoverflow.com/questions/56344625/is-there-a-way-to-change-the-chromedriver-location-for-selenium-in-vba
Anzeige
AW: Angabe Webdriverpfad Selenium
16.07.2021 16:26:10
W.Stecher
Hallo Zwenn,
vielen Dank für Deine Beiträge und Dein Engagement.
Die Diskussion eine einmalige Veränderung der Umgebungsvariablen vorzunehmen, gehe ich gerne mit unserem IT-Dienstleister ein, wenn ich schon keine Möglichkeit habe, in der Programmierung eine Treiberdatei vorzugeben.
Allerdings mache ich entweder irgendetwas falsch oder ich verstehe es nicht richtig.
Ich habe auf meinem privaten PC in den Umgebumgsvariablen sowohl die Benutzervariable PATH als auch die Systemvariable PATH jeweils um "D:\WebDriverTest" erweitert. In diesem Ordner liegt auch die chromedriver.exe
Dennoch bringt mir mein Dreizeiler

Public Function Browserautomation()
Dim Driver As New ChromeDriver
Driver.Start "Chrome"
Driver.Get "http://www.google.de"
End Function
weiterhin den FileNotFoundError mit dem Pfad "C:\Users\\AppData\Local\SeleniumBasic\chromdriver.exe"
Es macht für mich nicht den Eindruck, als ob der in PATH hinzugefügte Ordner auch überprüft wird.
Anzeige
AW: Angabe Webdriverpfad Selenium
16.07.2021 17:11:27
Zwenn
Hallo,
ich kann das im Moment nicht selber testen. Hast Du den Rechner neu gestartet? Bin nicht sicher, ob das unter Win10 noch notwendig ist. Früher musste man das machen, damit die geänderte Variable neu eingelesen wird.
AW: Angabe Webdriverpfad Selenium
16.07.2021 17:29:36
W.Stecher
Danke für den Hinweis, ich hatte den PC zwar nicht neu gestartet, doch nach Deinem Hinweis habe ich es getan.
Ändert leider nichts daran, dass der Treiber nicht gefunden wird und der Error FileNotFound kommt.
Anzeige
AW: Angabe Webdriverpfad Selenium
16.07.2021 15:56:37
W.Stecher
Sorry, ich habe da in der Verzweiflung wohl etwas durcheinander geworfen, Deine Argumentation ist natürlich absolut schlüssig.
Das was ich im Netz gefunden habe (z.B. hier [nur für einen anderen Treiber]: https://www.softwaretestinghelp.com/geckodriver-selenium-tutorial/)
bezieht sich nicht auf den Treiber, sondern auf das System, also

System.setProperty("webdriver.chrome.driver","")
Da ich das jedoch nicht in VBA realisiert bekommen habe, habe ich wohl Alternativen gesucht und irgendwann den Wald vor lauter Bäumen nicht mehr gesehen.
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Angabe Webdriverpfad für Selenium in Excel VBA


Schritt-für-Schritt-Anleitung

Um den Webdriver-Pfad in Excel VBA für Selenium festzulegen, befolge diese Schritte:

  1. Installiere SeleniumBasic: Stelle sicher, dass du SeleniumBasic installiert hast. Lade die neueste Version von der offiziellen Website herunter und installiere sie.

  2. Füge den Webdriver hinzu: Entzippe die chromedriver_win32.zip und kopiere die chromedriver.exe in den Ordner C:\Program Files\SeleniumBasic oder C:\Users\<name>\AppData\Local\SeleniumBasic.

  3. Setze die Umgebungsvariable (falls nötig): Wenn du den Webdriver an einem anderen Ort gespeichert hast, kannst du die Umgebungsvariable PATH anpassen. Füge den Ordner, der die chromedriver.exe enthält, zu den Systemumgebungsvariablen hinzu.

  4. Neustart des Computers: Starte deinen Computer neu, um sicherzustellen, dass die Änderungen an den Umgebungsvariablen wirksam werden.

  5. Verwende den folgenden VBA-Code:

    Public Function Browserautomation()
       Dim Driver As New ChromeDriver
       Driver.Start "Chrome"
       Driver.Get "http://www.google.de"
    End Function

Häufige Fehler und Lösungen

  • FileNotFoundError: Wenn der Fehler FileNotFoundError auftritt, überprüfe den Pfad zur chromedriver.exe. Achte darauf, dass der Pfad korrekt in den Umgebungsvariablen gesetzt ist oder dass die Datei im richtigen Verzeichnis liegt.

  • Falscher Verweis: Stelle sicher, dass du die richtige Version von SeleniumBasic verwendest, die zu deiner Version von Chrome passt.

  • Neustart nicht durchgeführt: Vergiss nicht, deinen Computer neu zu starten, nachdem du Änderungen an den Umgebungsvariablen vorgenommen hast.


Alternative Methoden

Falls du Schwierigkeiten haben solltest, den Webdriver-Pfad in VBA zu setzen, gibt es alternative Ansätze:

  • Verwende die Umgebungsvariable: Statt den Pfad im Code anzugeben, kannst du den Pfad zur chromedriver.exe in den Umgebungsvariablen deines Systems setzen. Dies ist eine einmalige Einrichtung.

  • SeleniumBasic anpassen: Wenn du einen speziellen Ordner für den Webdriver verwenden möchtest, könntest du in Betracht ziehen, die Source-Dateien von SeleniumBasic zu modifizieren, um den Pfad anzupassen.


Praktische Beispiele

Hier sind einige Beispiele, wie du Selenium in VBA verwenden kannst:

  1. Öffnen einer Webseite:

    Public Function OpenGoogle()
       Dim Driver As New ChromeDriver
       Driver.Start "Chrome"
       Driver.Get "http://www.google.de"
    End Function
  2. Interaktion mit einem Element:

    Public Function SearchGoogle()
       Dim Driver As New ChromeDriver
       Driver.Start "Chrome"
       Driver.Get "http://www.google.de"
       Driver.FindElementByName("q").SendKeys "Selenium Excel VBA"
       Driver.FindElementByName("btnK").Click
    End Function

Tipps für Profis

  • Verwende Option Explicit: Setze am Anfang deiner Module Option Explicit, um sicherzustellen, dass alle Variablen deklariert werden. Dies hilft, Fehler im Code zu vermeiden.

  • Fehlerbehandlung einfügen: Implementiere Fehlerbehandlungsroutinen, um sicherzustellen, dass dein Code auch bei unerwarteten Fehlern stabil bleibt.

  • Halte deine Treiber aktuell: Achte darauf, dass du immer die neueste Version von chromedriver.exe verwendest, um sicherzustellen, dass alles reibungslos funktioniert.


FAQ: Häufige Fragen

1. Wie kann ich den Pfad zur chromedriver.exe im Code festlegen?
Der Pfad zur chromedriver.exe kann nicht direkt im Code festgelegt werden. Stattdessen musst du sicherstellen, dass der Treiber im richtigen Verzeichnis oder im PATH der Umgebungsvariablen gespeichert ist.

2. Funktioniert Selenium auch mit anderen Browsern?
Ja, Selenium unterstützt mehrere Browser. Wenn du Firefox verwendest, benötigst du den geckodriver und kannst ähnliche Methoden wie bei Chrome verwenden.

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