Flatex: alle Dokumente herunterladen

In diesem Artikel erkläre ich, wie man bei Flatex aus dem Dokumentenarchiv (Posteingang) alle PDF-Dokumente herunterlädt. Leider gibt es bei Flatex hierfür keine automatische Exportfunktion und die Extraktion der PDFs ist nicht trivial, mehr dazu im Technischen Hintergrund weiter unten. Ich habe daher ein Macro gebaut, dass dieses Problem löst und das Herunterladen erlaubt ohne sich einzeln durch hunderte Dokumente klicken zu müssen. Falls du auf der Suche nach einem Depot mit günstigeren Konditionen bist, dann schau dir gerne hier meinen Vergleich an.

1. Kompatiblität

Diese Anleitung bezieht sich auf Mozilla Firefox 71 und funktionierte für mich am 10.06.2020 au einem Bildschirm mit 4K (die Auflösung sollte theoretisch keine Rolle spielen). Das ganze sollte sich auch auf Chromium übertragen lassen, da hierfür die selbe Schnittstelle existiert. Sollte das hier genannte Prozedere nicht mehr funktionieren kann das die im Abschnitt 5 aufgelisteten Ursachen haben. Hinterlasse in diesem Falle gern einen Kommentar. Das Skript funktioniert auf Windows und Mac OS X und vermutlich auch auf GNU/Linux für Flatex Deutschland und Flatex Österreich.

2. Praktische Anleitung

  1. Installiere Selenium IDE
  2. Kopiere den Quelltext von weiter unten auf der Seite. Öffne Notepad (Win + R -> Notepad -> Enter) und füge den Quelltext ein. Wähle Datei -> speichern aus (STRG + S) wähle Dateityp Alle Dateien (*) (WICHTIG!) und gebe den Dateinamen “FlatexDownload.side” ein. Wenn du Notepad++ installiert hast würde ich dir Empfehlen diesen zu benutzen, da der Standard-Windows-Editor ein paar Macken hat und immer wieder zu unerwarteten Problemen führt.
  3. Logge dich bei Flatex ein und wähle “Alle Dokumenttypen”, “Alle”, “Indivudueller Zeitraum” aus.
  4. Wähle ein Startdatum aus das auf jeden Fall vor deiner Kontoeröffnung liegt (bei mir war das früheste wählbare Datum der 01.01.2005). Ändere Gelesen zu Alle.
  5. Gehe auf die Firefox Einstellungen Pop-Up Fenster Blockieren Ausnahmen und gebe https://konto.flatex.de beziehungsweise https://konto.flatex.at wenn du bei Flatex Östterreich bist in die Zeile ein und klicke auf Erlauben.

Theoretisch kannst du nun dir alle Dokumente bis zum heutigen Tag anzeigen lassen, allerdings stellt Flatex nur die letzten (laut eigener inkorrekter Anzeige “ersten”) 100 Dokumente dar. Deshalb empfiehlt es sich meiner Ansicht nach die Dokumente jahresweise abzuspeichern.

  1. Wenn du Windows benutzt, dann springe direkt zu Schritt 7. Wenn du ein anderes Betriebssystem nutzt, dann führe vorher die in Auf nicht Windows-Systemen beschriebenen Schritte durch. Wenn du Flatex Österreich benutzt, dann führe die Andreas’ Kommentar aufgelisteten Schritte durch bevor du mit Schritt 7 weiter machst.
  2. Wähle den 31.12. des 1. Jahres deiner Kontoeröffnung aus
  3. Klicke oben rechts in der Leiste auf das Symbol Einstellungen Firefox → Einstellungen → Downloads → Alle Dateien in folgendem Ordner abspeichern → “Flatex\20xx”. Ändere bei “Anwendungen” das “Portable Document Format” zu “Datei speichern”. (Das entfernt den Dialog vor dem Abspeichern).
  4. Klicke auf das Seleniumsymbol SeleniumIcon oben rechts in der Leiste von Firefox. Es öffnet sich ein neues Fenster mit einem Menü.
  5. Wähle “Open Existing Project” und wähle mein heruntergeladenes Macro aus.
  6. Starte das Macro indem du auf den Abspielknopf Abspielsymbol drückst.
  7. Das Macro lädt nun alle auf der Seite Abrufbaren PDFS herunter.
  8. Sobald länger als für 5 Sekunden sich keine neuen Fenster mehr öffnen und Firefox nicht mehr zappelt, ist der Vorgang für die gerade ausgewählten PDFs beendet. Im Selenium IDE Fenster sollte dich die Botschaft “Script completed successfully” begrüßen.
  9. Ändere nun das Start- und Enddatum entsprechend auf das nächste Jahr und ändere den Download ordner auf “Flatex\20xx+y”.
  10. Schließe das Flatexfenser welches vom Macro geöffnet wurde (sehr wichtig, sonst kann es beim nächsten Ausführen zur Fehlermeldung kommen).
  11. Starte den Prozess erneut indem du auf das Abspielensymbol drückst. Wiederhole bis du alle Jahre archiviert hast.

2.1 Auf nicht Windows-Systemen

Flatex erkennt welches Betriebssystem du verwendest und schickt dir dann eine Webseite die nicht nur ein anderes Aussehen (CSS) hat sondern auch andere interne Semantikstruktur (HTML). Da diese Anleitung auf der Semantikstruktur für Windows basiert musst du also folgendes tun:

  1. Installier dir eine Firefox Erweiterung die dir erlaubt den Benutzerclienten den dein Browser bei der HTTP(S)-Anfrage angibt zu manipulieren, zum Beispiel User Agent Switcher“ und stelle auf Windows um.
  2. Gehe in die Einstellungen von Firefox -> Cookies und Website-Daten -> Daten verwalten -> suche nach Flatex markiere die gefunden Einträge und wähle Ausgewähltes entfernen.
  3. Fahre mit Schritt 7 fort.

3. Quelltext

{
  "id": "f8551403-a89c-4751-b6fe-066386359340",
  "version": "3.0",
  "name": "FlatexDownload",
  "url": "https://konto.flatex.de",
  "tests": [{
    "id": "ad0cd28d-7bf9-4590-a38c-98834e14d625",
    "name": "FlatexDownloadScript",
    "commands": [{
      "id": "86862c98-ce1c-4028-9ce5-823f8d0e14ef",
      "comment": "",
      "command": "open",
      "target": "/banking-flatex/documentArchiveListFormAction.do",
      "targets": [],
      "value": ""
    }, {
      "id": "a8b96cc8-7cd6-42a9-87a7-dbbb4cf8a7c5",
      "comment": "",
      "command": "setWindowSize",
      "target": "1280x720",
      "targets": [],
      "value": ""
    }, {
      "id": "e9456761-1a49-42c9-bdb4-36f4f2d70586",
      "comment": "",
      "command": "storeWindowHandle",
      "target": "root",
      "targets": [],
      "value": ""
    }, {
      "id": "4b381b95-2e4b-4b48-a0ad-ab1e2d036d47",
      "comment": "",
      "command": "selectWindow",
      "target": "handle=${root}",
      "targets": [],
      "value": ""
    }, {
      "id": "635f5774-6a68-49aa-8f78-bbdf36871157",
      "comment": "",
      "command": "pause",
      "target": "3000",
      "targets": [],
      "value": ""
    }, {
      "id": "ff78ecb6-780a-47dc-abd8-aed1648a796a",
      "comment": "",
      "command": "store",
      "target": "1",
      "targets": [],
      "value": "iter"
    }, {
      "id": "6893606d-e905-4527-8818-f8eb6a64f6bb",
      "comment": "",
      "command": "storeXpathCount",
      "target": "xpath=//table/tbody/tr/td/table/tbody/tr",
      "targets": [],
      "value": "rowCount"
    }, {
      "id": "bbe4b87d-11fb-480e-897c-f37e961a7b20",
      "comment": "",
      "command": "echo",
      "target": "Number of rows is ${rowCount}",
      "targets": [],
      "value": ""
    }, {
      "id": "6c6c0775-d239-4e0d-bb33-25d96d2d4cbf",
      "comment": "",
      "command": "while",
      "target": "${iter}<=${rowCount}",
      "targets": [],
      "value": ""
    }, {
      "id": "54e0211e-286b-4203-9441-fbcae02d3c8c",
      "comment": "",
      "command": "echo",
      "target": "Saving ${iter}. document",
      "targets": [],
      "value": ""
    }, {
      "id": "a8069780-383a-4997-85b8-04d2011a0001",
      "comment": "",
      "command": "click",
      "target": "xpath=//table/tbody/tr/td/table/tbody/tr[${iter}]",
      "targets": [
        ["css=#TID190629481_0-0 > .C0", "css:finder"],
        ["xpath=//tr[@id='TID190629481_0-0']/td", "xpath:idRelative"],
        ["xpath=//td/table/tbody/tr/td", "xpath:position"]
      ],
      "value": "",
      "opensWindow": true,
      "windowHandleName": "win9876",
      "windowTimeout": 3000
    }, {
      "id": "6da5712a-509c-4628-8865-c667eefe3cac",
      "comment": "",
      "command": "selectWindow",
      "target": "handle=${win9876}",
      "targets": [],
      "value": ""
    }, {
      "id": "cf1b6252-433b-4bf1-be13-cedfd840696a",
      "comment": "",
      "command": "pause",
      "target": "2000",
      "targets": [],
      "value": ""
    }, {
      "id": "5937cfb3-cddb-4326-8848-c6a85d251476",
      "comment": "",
      "command": "click",
      "target": "xpath=//button[@id=\"download\"]",
      "targets": [],
      "value": ""
    }, {
      "id": "1af05a85-2ff4-4f09-b6aa-eca816e2afbc",
      "comment": "",
      "command": "close",
      "target": "",
      "targets": [],
      "value": ""
    }, {
      "id": "bba64a01-274f-4f77-a543-731b442fff28",
      "comment": "",
      "command": "selectWindow",
      "target": "handle=${root}",
      "targets": [],
      "value": ""
    }, {
      "id": "086dd774-54a4-4b25-992f-d37720c8edf0",
      "comment": "",
      "command": "executeScript",
      "target": "return Number(${iter})+1;",
      "targets": [],
      "value": "iter"
    }, {
      "id": "58f32f41-52c4-46dc-8685-e63fb841915a",
      "comment": "",
      "command": "end",
      "target": "",
      "targets": [],
      "value": ""
    }, {
      "id": "7a8c7897-0882-443d-846e-b89d6435e3e1",
      "comment": "",
      "command": "echo",
      "target": "Script completed successfully",
      "targets": [],
      "value": ""
    }]
  }],
  "suites": [{
    "id": "b272b29e-dfae-4594-b23b-1d76f8ee2f56",
    "name": "Default Suite",
    "persistSession": false,
    "parallel": false,
    "timeout": 300,
    "tests": ["ad0cd28d-7bf9-4590-a38c-98834e14d625"]
  }],
  "urls": ["https://konto.flatex.de/"],
  "plugins": []
}

4. Technischer Hintergrund

Die PDF-Dokumente sind nicht in der Seite direkt verlinkt sind sondern über einen Javascript-PDF-Viewer. Es wird dabei beim Klick auf die Tabellenzeile ein Link zu einem PDF-Viewer generiert und diesem gefolgt. In diesem PDF-Viewer kann dann der Herunterladeknopf geklickt werden.

Das ganze wird in meinem Macro auf folgende Art und Weise automatisiert:

  1. Öffne die Seite “/banking-flatex/documentArchiveListFormAction.do”
  2. Setze das Fenster groß genug, dass Flatex die Formatierung für den Desktop beibehält
  3. Speichere eine Referenz zu dem aktuellen Flatexfenster
  4. Warte 3000 Millisekunden, dass die Seite auf jeden Fall geladen ist
  5. Gehe in einer Schleife von i = 1. bis zur letzten Zeile.
  6. Klicke auf jede i-te Zeile, warte bis das Fenster sich öffnet
  7. Warte dann 2000 ms. Da ein PDF-Viewer geladen wird muss man anschließend nach dessen Laden nochmal warten um sicher zu sein, dass er auch das Dokument in diesem geladen wurde.
  8. Drücke den Knopf herunterladen
  9. Schließe das Fenster
  10. Kehre zum ursprünglichen Fenster zurück, fahre bei Punkt 5 fort.

Ich hoffe das Skript hilft euch eure Daten von Flatex zu exportieren. Und ich empfehle euch einen Blick in das neue Preismodell Flatex’ zu werfen. Mit ihren neuerlichen Gebühren sind sie schwer noch als kompetitiv zu bezeichnen.

5. Das Skript funktioniert nicht!

Wenn das Skript nicht funktioniert kann das entweder daran liegen dass Flatex die Seitenstruktur stark verändert hat (mit kleineren Änderungen kommt das Skript gut klar), deine Internetverbindung, Rechner oder Software sehr schlecht sind, oder aber dass du einfach Pech hattest. Manchmal funktioniert das Skript nicht beim ersten Mal Ausführen. Es einfach nochmal zu probieren kann helfen. Es kann auch helfen vorm erneuten Probieren alle vom Skript geöffneten (oder auch nur ein paar, probier’s aus, lies die Kommentare) Seiten schließt und es dann nochmal ausführt tadellos. Wie du die beiden anderen Ursachen angehen kannst erfährst du in folgenden zwei Abschnitten:

5.1 Skript aktualisieren

Jedes mal wenn Flatex die HTML-Struktur der Seite verändert (vermutlich mehrmals im Jahr) muss das Skript angepasst werden. Dabei muss im gesamten Skript in der Regel zum Glück nur zwei Ausdrück angepasst werden: der Pfad zur Tabellenzeile und der Pfad zum Herunterladenknopf. Falls das Skript nicht mehr funktioniert und du dir sicher bist, das Skript korrekt ausgeführt zu haben, dann kannst du es auf folgende Art und Weise Teilkapiteln:

5.1.1 Tabellenzeile aktualisieren

  1. Rufe ganz normal dein Dokumentenarchiv bei Flatex auf.
  2. In Firefox (in Chrome ähnlich) klicke mit der rechten Maustaste auf eine Tabellenzeile (also darauf wo du normalerweise klickst um ein Dokument zu öffnen).
  3. Wähle Element untersuchen aus dem Dialog aus
  4. Es öffnet sich nun im unteren Bereich des Fensters eine Übersicht des HMTL-Quelltextes der Seite. Das Element das du rechts angeklickt hattest ist hervorgehoben.
  5. Rechtsklicke das in der HTML-Übersicht hervorgehobene HTML-Element.
  6. Im sich öffnenenden Menü wähle Kopieren -> XPath
  7. Du solltest nun etwas erhalten wie /html/body/div[a]/div[b]/div[c]/div[d]/div[e]/div[f]/table/tbody/tr/td/table/tbody/tr[g] wobei a, b, c, d, e, f, g Platzhalter beliebige natürliche Zahlen sind. Entferne nun [g] und füge den Ausdruck anstelle von //table/tbody/tr/td/table/tbody/tr in Zeile 55 und Zeile 83 (im Quelltext) ein.
  8. Poste ein Kommentar zum aktualisierten Xpath, damit das Skript hier für andere Nutzer angepasst werden kann. Poste den Kommentar selbst wenn deine Aktualisierung nicht funktioniert, damit ich und die Nutzer bescheid wissen ob sich etwas an der Seitenstruktur verändert hat.

5.1.2 Herunterladenknopf aktualisieren

  1. Öffne ein Dokument im Flatex Dokumentenarchiv.
  2. Im nun geöffneten Fenster gilt analoges vorgehen, wie in obiger Beschreibung, nur dass du einen Rechtsklick auf den Herunterladenknopf durchführst und entsprechend die Zeile 111 bearbeitest.
  3. Poste deinen Kommentar mit dem aktualisierten XPath.

5.2 Skript an Datenwüste Deutschland oder langsamen Rechner anpassen

Im Skript warte ich an zwei verschiedenen Stellen auf das Laden einer Seite. Die Wartezeit beträgt dabei beim ersten mal 3000 ms Sekunden und beim den anderen Malen 2000 ms. Nun kann es sein, dass diese Wartezeit für ein vollständiges Laden nicht ausreicht. Das kann an einer langsamen Internetverbindung einem schlechten Browser (Internet Explorer 😉 ) oder an einem Rechner mit mangelnder Leistung liegen. In jedem Falle solltest du ausprobieren, ob du wenn du diese Werte in der Selenium IDE abänderst (einfach bei dem jeweiligen “Pause”-Eintrag die Zahlabändern) du bessere Resultate bekommst. Je höher du die Zahlen setzt, desto länger braucht das Skript. Aber dafür steigt die Wahrscheinlichkeit dass die Wartezeit ausreicht um die Seiten vollständig zu laden bevor das Skript fortfährt. 3000 und 2000 ms Sekunden haben bei mir und vielen anderen Nutzern gut gereicht.

6. Änderungslog

  • 2021-02-18: Anmerkungen von Tom und Manni übernommen
  • 2021-01-23: Warnhinweise entschärft, Anleitung zur Anpassung an langsames Internet oder langasame Rechner hinzugefügt. Skript abgeändert, dass es länger kompatibel sein wird (XPath für den Knopf generisiert, “xpath=/html/body/div[1]/div[2]/div[3]/div/div[1]/div[2]/button[@id=\”download\” -> “xpath=/button[@id=\“download\“
  • 2021-01: Anleitung zur Aktualisierung hinzugefügt
  • 2020-11: Österreich dank Nutzerkommentar hinzugefügt
  • 2020-09-21: Rolands Test berücksichtigt.
  • 2020-09-19: Rolands Anmerkungen berücksichtigt.
  • 2020-06-10: Die Flatexseite hat sich geändert. Das Element
    “/html/body/div[1]/form[3]/div/div/div[6]/div[2]/table/tbody/tr/td/table/tbody” ist nun
    “/html/body/div/form[3]/div/div/div[7]/div[2]/table/tbody/tr/td/table/tbody”, im Quelltext habe ich folglich das ganze durch
    “///table/tbody/tr/td/table/tbody” ersetzt um möglichst lange Kompatibilität zu bewahren.
  • 2020-06-19: Das zweite Pause wieder eingefügt. Danke Erik.

59 thoughts on “Flatex: alle Dokumente herunterladen

  1. Pingback: Bestes Depot für Aktienhandel Mai 2020 | Duddebabber

  2. Hi.
    Habe soeben den Anleitungen Folge geleistet. Leider kommt am Ende eine Fehlermeldung, wenn Firefox aufgehört hat, zu zittern.
    Bei “Log10” command=click, Target=xpath/html/body….– failed: exceeded waiting time for new window to appear 3000ms

    Grüße
    Der Chris

  3. Hallo nutzniesser.

    Danke erst einmal; gute Arbeit!
    Der Fehler wird nicht mehr zurückgegeben; ABER:
    von im SE Engine Status/Log angezeigten 63.documents, sind aktuell nur 2x Docs wirklich heruntergeladen worden.
    Probiere ich direkt in konto.flatex.de aktiv selbst und klicke den Button “dokument speichern”, so wird das jeweilige Dokument auch heruntergeladen…

    VG
    Der Chris

    • Hallo,

      ich vermute Mal das liegt daran dass du den internen PDF-Anzeiger von Firefox aktiviert hast und Flatex öffnet dann je nach Dokumententyp das Dokument meistens im Firefox-JS-PDF-Anzeiger Mal in seinem eigenen. Probier Mal den in about:config zu deaktivieren. Ich hab gerade nur ein Handy und kann es selbst nicht ausprobieren, ich deaktiviere die browserinternen PDF-Anzeiger immer direkt per Default weil sie Formatierungsfehler beim Drucken machen.

      Viele Grüße

      Disable Firefox PDF viewer
      If you want to disable the built-in PDF viewer entirely, type, “about:config” in the address bar, then click on the “I’ll be careful, I promise!” button. Next, search for pdfjs.disabled, then double-click on the entry, which will turn the boolean value from “false” to “true.”

  4. Hallo.

    Leider (noch) ohne Erfolg. Der Wechsel von false nach true war wohl wirkungslos.
    Ich abe auch alle FF Add-ons deaktiviert; bis auf SE natürlich.
    Ohne Erfolg.

    VG
    Der Chris

  5. Hallo,

    ich hab das gleiche Problem.
    Ich konnte es allerdings lösen – es liegt wohl dran dass in dem zweiten pause commando ein // davor ist (“command”: “//pause”).
    Dadurch wird pause bis zum Aufruf der PDF ignoriert und zu schnell versucht, den Speichern Button zu drücken.
    Ich hab einfach “//” weggemacht, also “command”: “pause” – dann gehts.

    VG,
    Erik

  6. Hallo Erik,

    da hast du den richtigen Riecher gehabt, ich hatte letztens auch probiert das ganze ohne Pausenbefehl (der eigentlich unschön ist und laut Doku nicht benutzt werden sollte) mit wait for element present [1] zu machen, aber irgendwie war ich daran gescheitert und bin deshalb dann doch auf das unelegantere pausieren übergegangen und hatte das aufgrund der gescheiterten Versuchen vermutlich noch auskommentiert und vergessen. Ich habe die Auskommentierung oben im Quelltext auf dieser Seite entfernt. Diese Lösung ist entsprechend immer noch suboptimal da sie von Internetverbindung und Browsergeschwindigkeit abhängt und eventuell bei manchen Leute zu lange wartet und bei anderen zu kurz. Hier muss jeder selbst noch mit rumspielen, aber da es ja eine einmalige Sache ist alles von Flatex herunterzuladen ist das verzeihbar.

    Chris, funktioniert es jetzt bei dir?

    Viele Grüße

    [1] https://www.selenium.dev/selenium-ide/docs/en/api/commands#wait-for-element-present

  7. Zuerst einmal: super Tool – besten Dank!

    Ich bin der Anleitung gefolgt und es funktioniert, mit einer Auffälligkeit: Die dritte Datei wird doppelt gespeichert, dafür wird die letzte ausgelassen. Ich habe heute morgen die Schritte mit einem neu gebooteten Rechner noch einmal wiederholt, es tritt weiterhin auf. Nur bei einem Download mit ganz wenig Dateien tritt es nicht auf.

    Ist das sonst schon mal aufgefallen?

  8. Moin, erstmal vielen Dank für den Beitrag. Ich verwende einen Mac, leider funktioniert bei mir der Import des Makros nicht — ich bekomme die Fehlermeldung “Error migrating project – Unknown file was received”. Gibt es dazu evtl. eine Lösung?
    Danke und viele Grüße

    • Hallo Roland,
      die erste Vermutung (du gibst viel zu wenige Details, als dass man dir wirklich gut helfen könnte) wäre dass es an dem Texteditor liegt mit dem du die Datei erstellt hast. Vermutlich wird er den Text nicht einfach byteweise kopieren sondern irgendeine komische Sache mit anstellen, vermutlich der Zeilenumbruch… Probier mal einen anderen Texteditor aus, vielleicht findest du hier etwas geeignetes:
      Notepad++ Alternativen für Mac OS X

  9. Danke fuer Deine schnelle Antwort. Die erste Fehlermeldung war in der Tat auf den Editor zurueckzufuehren. Allerdings konnte ich die Datei dann in Selenium immer noch nicht oeffnen (ohne Fehlermeldung). Nach etwas Herausprobieren (ich habe den Code dann mal manuell eingegeben) stellte sich heraus, dass das Selenium beim Oeffnen streikt, wenn diese Zeile komplett drin ist:
    {
    “id”: “a8069780-383a-4997-85b8-04d2011a0001”,
    “comment”: “”,
    “command”: “click”,
    “target”: “xpath=//table/tbody/tr/td/table/tbody/tr[${iter}]”,
    “targets”: [
    [“css=#TID190629481_0-0 > .C0”, “css:finder”],
    [“xpath=//tr[@id=’TID190629481_0-0′]/td”, “xpath:idRelative”],
    [“xpath=//td/table/tbody/tr/td”, “xpath:position”]
    ],
    “value”: “”,
    “opensWindow”: true,
    “windowHandleName”: “win9876”,
    “windowTimeout”: 3000
    },

    und zwar wegen der targets-Liste und wegen der zusaetzlichen Argumente opensWindow, windowHandleName und windowTimeout. Ohne die laeuft es aber natuerlich nicht.

    Mittlerweile habe ich Zugriff auf einen Windows-Rechner, da laeuft es auf Anhieb. Es muss also irgendwas mit der Kombination Firefox/Selenium/Mac zu tun haben.

    Ich wuerde noch zwei Anmerkungen in die Anleitung aufnehmen, damit alles sofort ohne Probleme laeuft:
    1) Man sollte ALLE Dokumente auswaehlen (Standard ist immer UNGELESEN), da nach dem Oeffnen eines Dokuments dieses aus der ungelesen-Liste verschwindet und das die While-Schleife durcheinanderbringt;
    2) Man muss im Firefox in den Einstellungen das Oeffnen von Popups von flatex.de zulassen.

    Nochmal vielen Dank, das Skript hat mir einiges an Zeit gespart.

    • Hallo Roland,
      das klingt so als ob Flatex, weil sie erkennen dass du Mac OS X verwendest, dir eine andere Seite schickt, die nicht nur ein anderes Aussehen (CSS) hat sondern auch andere interne Semantikstruktur (HTML). Du könntest folgendes noch probieren:
      1. Installier dir eine Firefox Erweiterung die dir erlaubt den Benutzerclienten den dein Browser bei der HTTP(S)-Anfrage angibt zu manipulieren, zum Beispiel User Agent Switcher” und stelle auf Windows um.
      2. Probiere das Skript nochmal aus.
      3. Wenn das nicht klappt, dann geh in die Firefox Einstellungen -> Cookies und Website-Daten -> Daten verwalten -> suche nach Flatex markiere die gefunden Einträge und wähle Ausgewähltes entfernen und probiere das Skript anschließend noch mal aus.

      Ich hab deine Anmerkungen in den Artikel aufgenommen. Ich würde mich über deinen Bericht freuen.

  10. Nach dem Löschen der Cookies und dem Vortäuschen eines Windows-Rechners hat es funktioniert, danke. Man musste sich dann in dem vom Skript geöffneten Fenster nochmals anmelden und die Cookie-Auswahl bestätigen und das Skript anschließend nochmal starten. Das kannst Du also auch noch in die Anweisungen für Mac-User aufnehmen.

  11. Vielen Dank fuer dieses tolle Script! Eine echte Zeitersparnis.
    Eine kleine Sache hab ich noch festgestellt: das letzte PDF in der Liste wird nicht geoeffnet und gespeichert. Eventuell wird da die while-Schleife zu zeitig abgebrochen?
    Viele Gruesse
    Christoph

  12. Hallo Christoph,

    siehe meinen Kommentar vom 5. September: Wird bei Dir auch die dritte Datei doppelt runtergeladen wie bei mir? Bei mir fehlt dann auch die letzte.

  13. Vielen Dank für das Skript. Hab noch eine paar Anpassungen vornehmen müssen damit es für Österreich auch funktioniert.
    Für die Nutzung von Flatex.at folgende Änderungen vornehmen:

    Zeile 5
    “url”: “https://konto.flatex.at”,

    Zeile 13
    “target”: “/banking-flatex.at/documentArchiveListFormAction.do”,

    Zeile 159
    “urls”: [“https://konto.flatex.at/”],

  14. Hallo, ich habe es gemäß deiner Anleitung ausprobiert. Bei mir (österreich) öffnet flatex aber immer einen neuen Tab mit dem Titel “BFOEncoder output – Dokumentenname* in dem dann das pdf geöffnet wird (trotz Einstellungen gem. deiner Anleitung) Entsprechend läuft das script zwar erfolgreich durch, aber es wird nichts gespeichert…
    Was mache ich falsch?

    Danke!

  15. Sorry, ich hatte die Einstellung zum Öffnen in Tabs aktiv und in der URL http statt https für die pop-ups. Jetzt klappts! 🙂

    Danke, kann gelöscht werden

  16. Vielen Dank,
    hab es gerade versucht und leider kommt ne Fehlermeldung beim Selenium starten bzw. Projekt öffnen:
    Ich wähle dann die .side-Datei aus (ist bei mir trotzdem ne TXT)
    und erhalte
    Error migrating project
    Unknown file was received

    Was mache ich falsch?

    • Hallo Thomas,
      du schreibst ja schon selbst was du falsch machst. Du hast eine txt-Datei statt eine Side-Datei. Bei Windows kann man in seiner Standard-Konfiguration nicht mal Dateiendungen ändern. Führe mal folgenden Schritt aus, dann kannst du wirklich die Dateinamensendungen ändern:
      Dateiendungen anzeigen

    • Thomas,
      ich habe Schritt 2 der Anleitung noch ein mal ausführlicher beschrieben, du kannst es noch mal probieren ab Schritt 2, dann brauchst du das Umbennen der Datei nicht zu machen.

  17. Danke, es läuft grad fleissig 😉
    Mal schauen, ob ich es auch für andere Seiten lauffähig bekomme..Vermutlich wird das nicht klappen, weil jede Seite anders aufgebaut ist 🙁

  18. Guten Tag und vielen Dank für das Erstellen des Tutorials. Bei mir kommt beim Ausführen des Skripts immer folgende Fehlermeldung: Before you can start recording, you must specify a valid base URL for your project. Your tests will start by navigating to this URL.
    Was kann ich da machen?

    • Hallo Beeren,
      scheint so als hättest du irgendeinen Fehler bei der Ausführung meiner Anleitung gemacht, oder dass ich mich vielleicht irgendwo missverständlich ausgedrückt habe. Du scheinst der erste mit dem Fehler zu sein. Probiere es einfach nochmal und pass auf dass du es exakt so machst wie beschrieben. Wenn du herausfindest was du missverstanden hattest, würde ich mich freuen wenn du es hier mitmachst, dass ich die Anleitung an entsprechender Stelle verständlicher formulieren kann. Guten Rutsch

  19. Hallo nutzniesser,

    vielen Dank für die tolle Anleitung und den ganzen Aufwand. Habe heute alle Schritte durchgeführt und alles funktioniert auch grds. ABER: Nach dem Klick auf das Dreieck öffnet sich ein neues Fenster mit “Preparing to run Test”. Dann passiert nichts mehr. Im Protokoll von Selenium steht: ‘FlatexDownloadScript’ completed successfully. Es scheint also eigentlich alles richtig zu sein, aber der download erfolgt nicht… Hast Du eine Idee?

    Vielen Dank und viele Grüße
    Andreas

    ***
    Running ‘FlatexDownloadScript’
    14:26:36 1.open on /banking-flatex/documentArchiveListFormAction.do OK
    14:26:36 2.setWindowSize on 1280×720 OK
    14:26:36 3.storeWindowHandle on root OK
    14:26:36 4.selectWindow on handle=${root} OK
    14:26:36 5.pause on 3000 OK
    14:26:36 6.store on 1 with value iter OK
    14:26:39 7.storeXpathCount on xpath=//table/tbody/tr/td/table/tbody/tr with value rowCount OK
    14:26:40 echo: Number of rows is 0
    14:26:40 9.while on ${iter}<=${rowCount} OK
    14:26:40 18.end OK
    14:26:40 echo: Script completed successfully
    14:26:40 'FlatexDownloadScript' completed successfully
    14:26:40

    • Hallo Andreas,

      ich konkret bin bei Flatex nicht mehr Kunde, weil mir die Konditionen zu bescheiden waren. Ich kann mich deshalb nicht mehr einloggen und kann dementsprechend nicht überprüfen ob sich etwas an der Seite geändert hat.

      Die Ausgabe des Skriptes ist zweideutig, entweder ist Selenium beim Ausführen nicht auf der korrekten Webseite (öffnet sich denn die Seite mit der Übersicht der Dokumente überhaupt?) oder die HTML-Struktur der Seite hat sich geändert.

      Ich weiß nicht von welchem “Dreieck” du redest.

      Welches Betriebssystem benutzt du? Welches Land? Browser Cache zurücksetzen, etc und noch mal neu probieren. Guten Rutsch.

  20. Servus zusammen,

    ich habe das gleiche Problem wie Andreas, cache geleert und es zeigt successfully an. Als ich nen Timout bei Flatex ich aber trotzdem den Download starten wollte ging es auf die Internetseite. Also es scheint schon auf die Internetseite zuzugreifen… Aber irgendwie kein Download

    VG
    Moritz

    • Hallo Moritz,
      dann scheint Flatex wohl zu Weihnachten euch ein Geschenk gemacht zu haben und die HTML-Struktur der Webseite geändert zu haben. Da ich keinen Flatex-Account mehr habe kann ich leider selbst nicht nachgucken. Wer helfen will das Skript zu aktualisieren, könnte hier einen Kommentar mit dem aktuellen XPath des Herunterladenknopfes posten wie hier beschrieben. Ich vermute mal dass es am ehesten hieran liegt.
      Viele Grüße

  21. Vielen Dank für das Skript.
    Bei mir hat es gut funktioniert.
    Mit mehreren hundert dateien hat es ein paar mal bei
    click on xpath=//table/tbody/tr/td/table/tbody/tr[${iter}] Failed:
    Exceeded waiting time for new window to appear 3000ms

    gehakt. 3 Sekunden sollten zwar ausreichen, aber ich vermute dass die Zeit der Knackpunkt ist.
    Beim erneuten Starten des Skripts hat es problemlos funktioniert.

    • Hallo Marco,

      ja dass das Skript manchmal einfach nicht funktioniert habe ich auch gehabt. Ich habe nie herausgefunden woran es lag. Ich habe es explizit nochmal im Aritkel unter Kapitel 5 erwähnt.

  22. //html/body/div/form[3]/div/div/div[7]/div[2]/table/tbody/tr/td/table[2]/tbody/tr
    ist der XPath einer Tabellenzeile in der Dokumentenübersicht bei mir.
    Der XPath des Downloadknopfes ist gleich geblieben mit: /html/body/div[1]/div[2]/div[3]/div/div[1]/div[2]/button[@id=\”download\”]

    Funktioniert leider noch nicht. Das Skript meldet, dass 0 Reihen gefunden wurden.

    • Hallo Daniel,

      versuch mal was ich im neuen Teilkapitel Datenwüste beschreibe. Bei den anderen funktioniert es ja. Die Lösung mit einer für alle fixen Wartezeit ist sehr unelegant, eine elegantere Lösung zu implementieren hatte nicht funktioniert, deswegen hatte ich es so belassen.

  23. Hallo Nutzniesser,
    ich will mich herzlich bedanken für den Code, den du hier für diesen Gesamtdownload bei Flatex bereitgestellt hast. Entgegen den Problemen aus den vorherigen Kommentaren hat bei mir alles noch geklappt (heute vorgenommen). Es ist sehr, sehr cool und nett von dir, dass du uns das zur Verfügung gestellt hast! Ganz starke Sache! Auch an diesem Beispiel sehe ich mal wieder (ich bin 27), dass der codende in unseren Tagen, die da kommen, klar im Vorteil sein wird bei allen möglichen Problemstellungen…auch tolle Perspektiven in der Analyse von Daten aus dem Wirtschaftsbereicht mit Blick auf unser aller Interesse an Aktien sind das! (Der Artikel über den Brokervergleich übrigens auch gut, habe ich meinem Papa gleich gesendet :)) Muss ich mal schauen da reinzukommen mit R im Beginn zumindest…in diesem Sinne: klopf’ dir auf die Schulter und vielen Dank!

    Philipp

  24. Hier die neuen XPATH:
    1.
    /html/body/div[1]/form[3]/div/div/div[6]/div[2]/table/tbody/tr/td/table[2]/tbody/tr[1]/td[4]/div

    2.
    //*[@id=”download”]

    • Hallo Carsten, Daniel Marco, vielen Dank für das Einsenden der aktuellen Pfade. Sie scheinen ja noch kompatibel zu sein. Ich habe zur Sicherheit für die Zukunft den Xpath für den Herunterladeknopf trotzdem mal gekürzt ähnlich wie Carsten, siehe Änderungslog, damit es auch noch lange für die Zukunft funktioniert.

      Danke Phillip, Marco für die Bestätigung dass das Skript prinzipiell noch funktioniert.

  25. Hallo, ich habe leider dasselbe Problem wie von Andreas am 31. Dezember 2020 geschildert.

    Ich öffne das Flatex-Dokumentenarchiv und stelle alles wie oben genannt ein.
    Noch während ich auf der Seite bin, starte ich das Script wie geschildert.
    Das Script läuft erfolgreich durch, allerdings ohne auch nur ein PDF abzurufen oder zu speichern:

    Running ‘FlatexDownloadScript’
    1.open on /banking-flatex.at/documentArchiveListFormAction.do OK
    2.setWindowSize on 1280×720 OK
    3.storeWindowHandle on root OK
    4.selectWindow on handle=${root} OK
    5.pause on 3000 OK
    6.store on 1 with value iter OK
    7.storeXpathCount on xpath=//table/tbody/tr/td/table/tbody/tr with value rowCount OK
    echo: Number of rows is 0
    9.while on ${iter}<=${rowCount} OK
    18.end OK
    echo: Script completed successfully
    'FlatexDownloadScript' completed successfully

    Dazu öffnet sich ein Pop-Up mit dem Text "Preparing to run your test".

    Mehr passiert nicht.

    Die neuen Xpath-Verweise sind wie folgt:

    /html/body/div/form[3]/div/div/div[6]/div[2]/table/tbody/tr/td/table[2]/tbody/tr[1]/td[1]

    //*[@id="download"]

    Mir ist nicht ganz klar, wie der Schritt "Entferne nun [g]" gemeint ist – das betrifft das letzte "tr[1]".
    Soll hier nur die 1 entfernt werden, so dass "tr[]" übrig bleibt? Soll "[1]" entfernt werden?

    Hinweis: Ich nutze Flatex Österreich, danke auch für den hilfreichen Kommentar mit den Änderungen für AT!

  26. Hallo,

    Zunächst einmal vielen Dank für das Skript selbst, tolle Idee!

    Ich habe leider dasselbe Problem wie bereits von Andreas gepostet: Das Skript läuft scheinbar erfolgreich (einmal) durch, ohne allerdings auch nur ein PDF herunterzuladen.
    Gleichzeitig öffnet sich ein Fenster mit “Preparing to run your test”. Mehr passiert nicht.

    Log:
    Running ‘FlatexDownloadScript’
    1.open on /banking-flatex.at/documentArchiveListFormAction.do OK
    2.setWindowSize on 1280×720 OK
    3.storeWindowHandle on root OK
    4.selectWindow on handle=${root} OK
    5.pause on 3000 OK
    6.store on 1 with value iter OK
    7.storeXpathCount on xpath=//table/tbody/tr/td/table/tbody/tr with value rowCount OK
    echo: Number of rows is 0
    9.while on ${iter}<=${rowCount} OK
    18.end OK
    echo: Script completed successfully
    'FlatexDownloadScript' completed successfully

    Info: Ich versuche das Skript auf flatex.at zum Laufen zu bringen, die Änderungen für Österreich habe ich übernommen.

    Die aktuellen XPath-Verweise:

    /html/body/div[1]/form[3]/div/div/div[6]/div[2]/table/tbody/tr/td/table[2]/tbody/tr/td[1]/div
    //*[@id="download"]

    Was könnte das Problem sein?

  27. @Tom
    Hatte auch das gleiche Problem. Scheint an dem Selenium Plugin zu hängen.
    Bei mir hat es geholfen das Browser Fenster (Preparing to run your test) was aufgegangen ist nicht zu schliessen und in dem Plugin das Script nochmal zu starten.
    In dem Browser sollte das Dokumentenarchive von Flatex erscheinen, dann sollte auch das Script funktionieren.
    Viel Glück

    • Hallo Manni, ja so ähnlich beschreibe ich das ja auch in der Sektion Problem beheben. Manchmal muss man es einfach mehrmals probieren und ein wenig herumspielen bis es funktioniert. Danke dass du deine Erfahrung beschreibst.

  28. Hallo Manni,

    vielen Dank für den Hinweis, damit hat es einwandfrei funktioniert. Ich habe vorher immer alle Fenster geschlossen und komplett neugestartet…. Vielleicht kann man diesen Hinweis oben aufnehmen?

    Für Nutzer von Flatex.AT noch der Hinweis, im Pop-Up-Blocker sollte die Ausnahme natürlich für Flatex Österreich eingefügt werden: “https://konto.flatex.at”

  29. Vielen Dank für deine Zeit, nettes Script und super Anleitung!

    Ich habe es erfolgreich ausgeführt und alle Dokumente heruntergeladen. Am Anfang hat das Script nicht funktioniert, weil die Fenstergröße nicht gepasst.
    Ich musste Window Size im Script zum 1500×900 anpassen. Sonst ist alles perfekt!

    Mein System:
    Ubuntu 20.04
    Auflösung 3840×2160 4K, aber mit Scale 175%

  30. Super, Danke dir. Hat super geklappt, und habe mich auch noch bisschen gefühlt als könnt ich programmieren.

    Grüße aus Tirol.

    LG

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.