Seite 1 von 1
Python mit Selenium bei Chrome
Verfasst: Sonntag 10. November 2019, 22:19
von Call
Hallo Leute, ich versuche gerade von einer Exceldatei, die immer einen neuen Namen hat, wobei ich den Namen nicht vorhersagen kann, den Dateinamen zu bekommen. Das Problem hierbei ist, dass ich keine Möglichkeit finde. Ich leite Selenium zu den "chrome://downloads/" wo die Datei tatsächlich als einzige immer angezeigt würde. Das Problem ist nur, dass ich leider keine geeignete ID finde, um es mit find element by id zu finden, um davon das attribut class zu entnehmen, worin hierbei der dateiname einsichtlich wäre. Zweiter Versuch war dann jetzt mit paar anderen elements by selector,xpath usw. leider auch net geklappt. Dritter Versuch diesmal mit auf "Im Ordner Anzeigen" klicken und Dateiname kopieren. Die Frage ist nur, wie man den Dateinamen hier kopieren kann. Wäre echt dankbar, wenn jemand mir hier helfen könnte.
MfG Call
Re: Python mit Selenium bei Chrome
Verfasst: Sonntag 10. November 2019, 22:22
von sparrow
Wenn du die Datei heruntergeladen hast (so verstehe ich dich), dann schau in den Download-Ordner auf der Platte und such dir die neueste Datei.
Re: Python mit Selenium bei Chrome
Verfasst: Sonntag 10. November 2019, 22:34
von Call
sparrow hat geschrieben: Sonntag 10. November 2019, 22:22
Wenn du die Datei heruntergeladen hast (so verstehe ich dich), dann schau in den Download-Ordner auf der Platte und such die die neueste Datei.
ja, aber ich bräuchte einen direkten pfad zur neusten datei. Wie kann ich das dann einlesen?
Re: Python mit Selenium bei Chrome
Verfasst: Sonntag 10. November 2019, 22:47
von sparrow
Ich verstehe die Frage nicht.
Den Download-Ordner kannst du als Konstante definieren. Der ändert sich ja nicht.
Und wie man mit Python die neueste Datei in einem Verzeichnis findet, hast du wie probiert?
Re: Python mit Selenium bei Chrome
Verfasst: Sonntag 10. November 2019, 22:52
von Call
sparrow hat geschrieben: Sonntag 10. November 2019, 22:47
Ich verstehe die Frage nicht.
Den Download-Ordner kannst du als Konstante definieren. Der ändert sich ja nicht.
Und wie man mit Python die neueste Datei in einem Verzeichnis findet, hast du wie probiert?
Ja klar, den Download-Order kann ich auch als Konstante definieren. Aber der Download ordner ist weder komplett leer noch soll und wird er nach jedem Durchgang geleert werden. Wie man mit Python die neuste Datei in einem Verzeichnis findet - davon habe ich leider keine Ahnung.
Re: Python mit Selenium bei Chrome
Verfasst: Sonntag 10. November 2019, 22:58
von sparrow
Dann schlage ich vor, eine entsprechende Recherche zu starten.
Re: Python mit Selenium bei Chrome
Verfasst: Sonntag 10. November 2019, 23:20
von Call
sparrow hat geschrieben: Sonntag 10. November 2019, 22:58
Dann schlage ich vor, eine entsprechende Recherche zu starten.
Tja, wenn man mit seiner Recherche nicht fündig wird kommt man aus genau diesem Grund zu diesem Forum. So wie ich das sehe braucht man os zu benutzen. Aber ich finde keine Dokumentation dafür.
Re: Python mit Selenium bei Chrome
Verfasst: Sonntag 10. November 2019, 23:28
von Sirius3
Warum brauchst Du Selenium? Bei einer direkten Lösung hättest Du auch direkt den Dateinamen?
Re: Python mit Selenium bei Chrome
Verfasst: Sonntag 10. November 2019, 23:33
von Call
Sirius3 hat geschrieben: Sonntag 10. November 2019, 23:28
Warum brauchst Du Selenium? Bei einer direkten Lösung hättest Du auch direkt den Dateinamen?
Wenn du eine direkte Lösung hast, her damit. Selenium war nur ein Versuch, da ich sowieso schon damit im Programm gearbeitet habe.
Code: Alles auswählen
latest_file = max(list_of_files, key=os.path.getctime)
Diesen codeschnippsel hab ich gefunden, ich verstehe aber zum beispiel nicht, was getctime sein soll oder wo ich das Verzeichnis eintragen soll.
Re: Python mit Selenium bei Chrome
Verfasst: Sonntag 10. November 2019, 23:41
von __blackjack__
@Call: Was `os.path.getctime()` macht kann man in der Dokumentation nachlesen. Ebenso die `max()`-Funktion. `list_of_files` ist ein bisschen unglücklich benannt weil da keine Dateiobjekte drin sein müssen, sondern Dateinamen, eventuell inklusive Pfad zu den Dateien von denen man die mit der Grössten „ctime“ haben möchte.
Ich würde in neuem Code eher mit `pathlib` statt mit `os.path` arbeiten.
Re: Python mit Selenium bei Chrome
Verfasst: Sonntag 10. November 2019, 23:48
von Sirius3
Ich habe keine direkte Lösung, weil ich ja gar nicht weißt, was Du genau abfragen willst.
Re: Python mit Selenium bei Chrome
Verfasst: Montag 11. November 2019, 08:06
von Jankie
So kommst du an den Namen der Datei, die als letztes im Ordner erstellt wurde:
Code: Alles auswählen
import glob
import os
PATH = r'C:\Temp\*' #Wenn z.B. nur .xlsx Dateien gesucht werden, dann *.xlsx
all_filenames = glob.glob(PATH)
latest_filename = max(all_filenames, key=os.path.getctime)
print(latest_filename)
Re: Python mit Selenium bei Chrome
Verfasst: Montag 11. November 2019, 08:53
von Sirius3
@Jankie: `os` und `glob` sind veraltet. Heutzutage benutzt man pathlib.
Code: Alles auswählen
from pathlib import Path
DOWNLOAD_PATH = Path('~/Downloads').expanduser()
all_filenames = DOWNLOAD_PATH.glob('*.xlsx')
latest_filename = max(all_filenames, key=lambda p: p.stat().st_ctime)