Firefox 136.0.1 mit Access VBA automatisieren

  • Hallo,
    inzwischen verzweifle ich an dem Versuch, Firefox mit Access VBA zu automatisieren. Ich hoffe, dass mir in diesem Forum jemand helfen kann.

    Worum geht es?
    Die Website, die ich bearbeiten will ist https://dispatch.simbrief.com/options/new
    Hier gibt es 4 Eingabefelder, die ich mit einem Text aus der Access DB befüllen möchte.
    Z.B. das Feld mit der input id "airline" Hier soll der Wert DLH aus der Access DB eingetragen werden.
    Auf der Seite ist auch noch ein Drop Down Feld zur Auswahl des gewünschten Fliegers.
    Wenn alle 4 Felder befüllt sind und der Flieger gewählt ist, soll der Generate Flight Button automatisch geklickt werden.

    Die Site kann ich aus Access heraus per VBA öffnen.
    Dann habe ich etliche Versuche mit dem GeckoDriver 0.36.0 und xPath unternommen, um das Feld "airline" mit dem Wert DLH zu füllen. Leider erreiche aber nichts.
    Kann mir bitte jemand einen Code zur Verfügung stellen, mit dem ich mein Ziel erreichen kann? Im Voraus vielen Dank für Eure Hilfe.
    Moderne Programmiersprachen wie Java, etc. kann ich leider nicht.

    Grüße
    Joachim

  • Hi A350Pilot , willkommen im Forum 👋 ,

    kannst du einen Test-Account für die Seite bereitstellen, den wir Helfenden benutzen können um dir zu helfen?
    Denn wenn wir nicht an die Seite die du geteilt hast herankommen, kann auch der XPath nicht ermittelt/geprüft etc. werden.

    Viele Grüße
    Sven

  • Du meinst sicherlich diese vier - (1) bis (4) - Input bzw. Dropdown Elemente?
    Und wenn ausgefüllt dann Button (5), richtig?

    Viele Grüße
    Sven

  • (1) XPath selector: //input[@id="orig"]
    (2) XPath selector: //input[@id="dest"]
    (3) XPath selector: //select[@id="basetype"]/option[text()="..."] ... durch bspw. "A225 - Antonov AN-225" ersetzen (also dynamisch durch deine Infos aus der AccessDB).
    (4) XPath selector: //select[@id="type"]/option[text()="..."] ... wie bei 3. bspw. mit "iniBuilds (MSFS) - An-225" ersetzen
    (5) XPath selector: //div[@id="options-generate"]

    Viele Grüße
    Sven

  • Hallo Sven,

    danke für die Antwort. Ich stelle hier mal den Code, den ich bisher habe zur Verfügung:

    Sobald ich auf drv zugreifen will, kommt Error 91 in Access.
    Kannst Du den Fehler hier entdecken?

    Gruß und danke,
    Joachim

    2 Mal editiert, zuletzt von SOLVE-SMART (19. März 2025 um 16:00)

  • Oha, ich habe diverse Fragen Joachim:

    1. Sind die Screenshots und die Einschätzungen der XPaths (1) bis (5) korrekt? Habe ich dich richtig verstanden?
    2. Bist du an VBA bzw. VBScript gebunden oder kannst du auch mit AutoIt etwas anfangen?
    3. Woher beziehst du deine Daten? Also wie oft willst am Ende "Generate Flight" abschicken?
      Geht es hier um einen Datensatz oder um 10 oder um 100-500?
    4. Ich denke du hast auch etwas vermischt (oder ich habe dich falsch verstanden), das WebDriver (Browser Automatisierung) und Public drv As FirefoxDriver sicherlich zwei unterschiedliche Dinge sind. Zumindest das AutoIt Projekt "au3WebDriver" was das WebDriver Protokoll nutzt, ist nicht das Gleiche wie dein drv.
    5. Beschreibe nochmal bitte dein Gesamtziel, damit ich oder andere hier, ggf. eine Empfehlung zu Alternativen aussprechen kann.
      Was ich meine ist, vielleicht stellt sich ja auch heraus das man per API einen Flug buchen kann (HTML requests <==> responses) und dann musst du gar nicht über den Browser gehen.

    Viele Grüße
    Sven

  • Einen Fehler konnte ich beheben. Es hat der Set drv = New Selenium.FirefoxDriver gefehlt, den ich jetzt nachgetragen habe.
    Nun kann ich auf drv zugreifen. Wenn ich aber das hier:
    Set ele = drv.FindElementByXPath(xPath)
    'text = ele.text
    GetElement = True
    Exit Function

    ausführen will, kommt beim Zugriff auf drv der Fehler 57 (Browser not started) Ich soll einen Get, Start oder StartRemotely ausführen.
    Bei drv.get "https://dispatch.simbrief.com/options/new" öffnet sich nur die Google Suchseite und nach 15 Sekunden kommt die Meldung Listen to Port ......
    Bei drv.Start "firefox", "https://dispatch.simbrief.com/options/new" bekomme ich auch nur die Google Suche und den Timeout Fehler
    Bei drv.StartRemotely "firefox","https://dispatch.simbrief.com/options/new" bekomme ich einen URI Fehler.

    Ich weiss echt nicht mehr weiter.

  • Oha, ich habe diverse Fragen Joachim:

    1. Sind die Screenshots und die Einschätzungen der XPaths (1) bis (5) korrekt? Habe ich dich richtig verstanden?
    2. Bist du an VBA bzw. VBScript gebunden oder kannst du auch mit AutoIt etwas anfangen?
    3. Woher beziehst du deine Daten? Also wie oft willst am Ende "Generate Flight" abschicken?
      Geht es hier um einen Datensatz oder um 10 oder um 100-500?
    4. Ich denke du hast auch etwas vermischt (oder ich habe dich falsch verstanden), das WebDriver (Browser Automatisierung) und Public drv As FirefoxDriver sicherlich zwei unterschiedliche Dinge sind. Zumindest das AutoIt Projekt "au3WebDriver" was das WebDriver Protokoll nutzt, ist nicht das Gleiche wie dein drv.
    5. Beschreibe nochmal bitte dein Gesamtziel, damit ich oder andere hier, ggf. eine Empfehlung zu Alternativen aussprechen kann.
      Was ich meine ist, vielleicht stellt sich ja auch heraus das man per API einen Flug buchen kann (HTML requests <==> responses) und dann musst du gar nicht über den Browser gehen.

    Viele Grüße
    Sven

    Hallo Sven,

    ich bin für mehrere Airlines tätig und muss daher spezifische Daten aus der DB an FF weitergeben.
    Ich denke also, ich bin auf VBA angewiesen. Ob ich mit AutoIT etwas erreichen kann, weiß ich nicht. Zumal ich nur Office VBA programmieren kann.

    Deine anderen Fragen kann ich so beantworten:
    1 - Ja, im Großen und Ganzen stimmt Deine Einschätzung
    2 - siehe Einleitung in diesem Post
    3 - Die Daten beziehe ich aus einer Tabelle in Access. Es geht hier um exakt einen Datensatz
    4 - Diese Ausführungen verstehe ich leider nicht.
    5 - Ziel ist es, die Daten aus einem Datensatz in die Boxen auf der Website einzutragen, aus DropDown Nr 4 in Deinem Bild, den Flieger auszuwählen und anschließend 1 mal den Generate Flight Button zu drücken.

    Falls es möglich ist, diese Aufgabenstellung mit AutoIT zu erledigen, bin ich gerne bereit, das zu probieren. Aber, Access ist das führende Datensystem und wie erwähnt, ich kann kein Java, oder sonstige hohen Programmiersprachen. Am Rande erwähnen möchte ich, dass es sich hier nicht um ein kommerzielles, sondern um ein rein privates Projekt handelt.

    Grüße und danke für Deine Hilfe,
    Joachim

  • ich bin für mehrere Airlines tätig und muss daher spezifische Daten aus der DB an FF weitergeben

    Am Rande erwähnen möchte ich, dass es sich hier nicht um ein kommerzielles, sondern um ein rein privates Projekt handelt

    Du bist für mehrere Airlines tätig, hast hier aber ein privates Projekt? Verstehe ich nicht 🤔 . Ist aber auch nicht so entscheidend.

    3 - Die Daten beziehe ich aus einer Tabelle in Access. Es geht hier um exakt einen Datensatz

    Geht es hier um eine einmalige Sache? Sicherlich nicht oder, denn ansonsten kannst du es ja manuell eintragen und fertig. Es geht um einen Datensatz? Wie häufig ändert sich dieser Datensatz oder sind es mehrere Access Datenbanken mit jeweils einen Datensatz oder wie muss ich mir das vorstellen?

    4 - Diese Ausführungen verstehe ich leider nicht.

    Du möchtest in VB Selenium nutzen um mit dem WireProtocol (WebDriver) zu arbeiten. In AutoIt ist es aber "au3WebDriver" und funktioniert nahezu identisch wie Selenium aber nicht ganz. Daher der Hinweis, aber auch nicht so wichtig.

    Access ist das führende Datensystem

    Eigentlich ist hier nur die Frage was das genau bedeutet. Denn ob nun AutoIt, VB oder node.js etc. auf die AccessDB zugreift und den Datensatz holt um dann auf der Webseite aktiv zu werden ist völlig egal. Daher interessiert mich eher wie du konkret mit der AccessDB umgehst? Wir reden doch von einer "Microsoft Access Datenbank" oder?

    Wie oft musst du noch weitere Aktionen auf der Seite durchführen? Denn falls es nichts anderes ist, gibt es auch noch Alternativen (mehr oder minder elgant, aber es gäbe sie).

    Viele Grüße
    Sven

  • Also, für mehrere Airlines tätig bedeutet, dass ich im MSFS2024 diverse Flugzeuge von diversen Airlines "fliege".
    Die Access DB dient hier zum einen der Flugvorbereitung und danach zur Flugerfassung und Nachbearbeitung.
    Das ist alles rein privat.

    Zu 3:
    Auf der Website sind die Daten einzutragen, die für einen Flug gebraucht werden. Diese Daten sind die Airline, die Flugnummer, der Startflughafen, der Zielflughafen und das gewünschte Flugzeug.
    Die Daten sind in der Access DB hinterlegt. Nehmen wir an, ich möchte von München nach Hamburg fliegen, dann enthält der Datensatz folgende Infos:
    Airline = DLH, Flugnummer = 124, Startflughafen = EDDM, Zielflughafen = EDDH und das gewünschte Flugzeug ist ein Airbus A320
    Mit diesen Infos kann ich auf der Website einen Flugplan generieren, den ich dann im Simulator abfliege. Die ersten 4 Felder sind komplett variabel und in der Tabelle hinterlegt, insgesamt ca. 30.000 Datensätze.
    Das ausfiltern des gewünschten Fluges geschieht mit DropDown Feldern in der DB. So kommt am Ende exakt nur ein Datensatz für den gewünschten Flug heraus.
    Den gewünschten Flieger suche ich mir dann aus. Kommt drauf an, mit was ich gerade "fliegen" möchte. Ich mache am Tag meist einen Flug von und zu den unterschiedlichsten Airports. Also keine einmalige Sache.
    Es ist eine DB mit den unterschiedlichsten Tabellen. Für die Daten auf der Website gibt es aber nur eine Tabelle.

    Zu 4:
    Es kommt halt darauf an, was ich für die Programmierung in AutoIT können muss. Ich bin über 60 und kann kein Java, etc.. Wenn ich das für AutoIT nicht brauche, umso besser.

    Abschließend kann ich mitteilen, dass wir über eine Microsoft Access Datenbank sprechen. Und dass ich nur den in 3 genannten Datensatz übertragen will. Per Generate Flight wird der Flugplan dann erstellt.

    Ich hoffe, ich konnte Deine Fragen alle beantworten.
    Danke nochmals für Deine Hilfe.
    Joachim

  • Hi und Danke Joachim für die Informationen. Meine Fragenreihe ist noch nicht zu Ende, daher hier ein kleines Video wie ich dich bisher verstanden habe sowie mit einigen weiteren Fragen.

    https://sven-seyfert.de/downloads/2025-03-19-generate-flight-browser-automation-questions.mp4

    Danach sind wir sicherlich soweit, dass wir in die Umsetzung gehen können.

    Viele Grüße
    Sven

    Update1:
    Im Video habe ich erwähnt, dass ich mal schaue ob eine API genutzt werden kann, damit die Flüge generiert werden. Im Prinzip ja, jedoch nicht ohne "active subscription". Das heißt ich könnte das bei mir nicht so einfach aufbereiten/vorbereiten/nachstellen, da ich kein kostenpflichtiges Abo einrichten werde. Habe zwar einen Demo-Account für mich gemacht, aber die freie Variante - da geht das mit API Nutzung so nicht.

  • Hallo Sven,
    ich bin beeindruckt von Deiner Auffassungsgabe, wie diese Website funktioniert.
    Danke auch für das Video. Gut gemacht und verständlich nachgefragt.
    Hier nun kommen meine Antworten:

    Ich werde Dir für die Entwicklung meine Simbrief Account Zugangsdaten geben. Das Passwort kann ich ja dann wieder ändern, wenn Du den Account nicht mehr brauchst.
    Falls es Dir hilft, kann ich Dir auch gerne die DB verfügbar machen. Generell bin ich für die xPath Lösung, da ich im Falle eines Falles, selbst Anpassungen vornehmen kann.
    Die IDs der Eingabefelder ändern sich nämlich hin und wieder.
    Ich möchte nach dem Start des PC, im Falle dass ich fliegen will, wie folgt vorgehen:
    Start der Access DB -> Auswahl der Flugdaten -> Öffnen FF durch die DB(Der FF ist zuvor nicht gestartet) -> Übertragen der 4 Daten in die Felder -> Auswahl des Fliegers -> Generate Flight Click -> Auslesen des von Simbrief erstellten Flugplans und übertragen in die DB ( she. Bild) -> Abschluss der Verarbeitung durch Click auf CommandButton in der DB und schliessen des FF. So habe ich es im MS Edge realisiert. Da der Edge aber von Version zu Version immer miserabler wird, möchte ich auf FF umsteigen.

    Anmerkung zu Deinem Video:
    Die Auswahl des Fliegers erfolgt nicht in der linken sondern in der rechten DropDown Box. Im Testaccount dürfte da nichts drin sein. In meinem Account sind dort aber die Flieger, für die ich Lizenzen habe.
    Ich kann die Daten aus der DB auch als XML-Datei ausgeben, falls es dann einfacher wäre, das Ziel zu erreichen.

    Ich hoffe, dass alles beantwortet ist. Falls es weitere Fragen gibt, einfach fragen.

    Grüße und vielen Dank für Deinen Einsatz.
    Joachim

  • Ich habe mich über das gesamte Wochenende mit AutoIt beschäftigt und keine Lösung finden können.
    Das wohl vielversprechende FF.au3 funktioniert mit der neuen Firefox Version nicht mehr. Und im AutoIt Examples Ordner habe ich nichts gefunden.
    Es sieht wohl danach aus, dass ich AutoIt für meinen Anwendungsfall nicht nutzen kann. Trotzdem danke Sven für Deine Hilfe.

    Grüße
    Joachim

  • Hi Joachim 👋 ,

    ich weiß nicht genau wie du nun auf die Erkenntnis kommst, dass du mit AutoIt den Firefox nicht automatisieren kannst, denn dies ist "relativ" einfach machbar.
    Für einen leichteren Einstieg mit dem WebDriver habe ich dieses Project/Repository angelegt: https://github.com/sven-seyfert/autoit-webdriver-boilerplate.

    Das deine Recherchen nicht so erfolgreich waren hängt vielleicht einfach damit zusammen, dass AutoIt nicht out-of-the-box das WebDriver Protokoll unterstützt und dafür ursprünglich auch gar nicht gedacht war, doch es funktioniert gut (wenn man weiß wie - was ja mit allen Dingen so ist 😅).

    Doch dazu gern mehr später wenn du magst. Wie wäre es, da ich in deinem Screenshot des Browser sehe das du Discord nutzt, dass wir uns dort mal etwas synchroner austauschen oder sogar mal per Talk/Voice miteinander sprechen? Dann kann ich besser supporten.

    Tritt dem AutoIt Community Projects-Discord-Server bei!
    Your space to collaborate (in english or german) with other AutoIt enthusiast regarding shared projects and more. | 20 Mitglieder
    discord.gg

    Viele Grüße
    Sven

  • Moin Sven,

    danke für Deine Rückmeldung.

    Als "Pilot" kommt man ohne Discord nicht aus. :D:D:D
    Deine Einladung, dem AutoIt Discord beizutreten, nehme ich gerne an.

    Ich habe gesucht "wie blöd" nach Codes zum FF starten. Sowohl bei Google -wo ich auf das FF.au3 gestossen bin- als auch in der AutoIt Hilfe und in den Beispielen im Programm Ordner.
    Das, von Dir genannte GitHub Project sehe ich mir jetzt einmal an und hoffe, dass ich daraus etwas für mein Projekt entnehmen kann. Ich melde mich dann auf dem Discord wieder.

    Grüße und danke für die Hilfe,
    Joachim

  • Super, genau so machen wir's Joachim. Das GitHub Projekt von mir ist ggf. etwas fortgeschrittener, zumindest wenn du gerade erst mit AutoIt beginnst - also lass dich bitte nicht erschlagen von den vielen Dateien im Projekt.

    Am Ende ist der Anteil der Browser Automatisierung ja sehr klein, sodass wir auch einfach 'ne Exe daraus machen können mit paar Konfigurationsoptionen von außen.
    Damit du nicht durch das ganze Projekt durchsteigen musst.

    Also bis später dann auf Discord Joachim 🤝 .

    Viele Grüße
    Sven