Ich hatte vor kurzem die Idee, Selenium mit Python zu verwenden, um einige sich wiederholende Aufgaben in SAP für einen Kunden zu automatisieren. Und wie immer, wenn man sich mit dem Code die Hände schmutzig macht, Ich fing an, einige Herausforderungen zu finden, die ich nie kommen sah. Nachdem Sie lange im Internet gesucht haben, um die am besten geeignete Lösung für jedes Problem zu finden, habe gedacht:
Wie gut wäre es gewesen, wenn Sie alles, was Sie brauchen, an einem Ort gefunden hätten, einsatzbereit?
Dann, um ihr Leben zu erleichtern, Ich habe in diesem Artikel gesammelt, die Antworten auf die häufigsten Herausforderungen ein Benutzer finden kann, indem er Selenium in Verbindung mit verwendet Out-of-the-box-Code-Snippets in Python geschrieben.
PD: Wenn Sie sich mit den Grundlagen von Selenium immer noch nicht zu Hause fühlen, Sie können unseren Leitfaden für die ersten Schritte mit Selenium lesen. Artikel erste.
Und jetzt lass uns in Aktion treten!
So laden Sie Dateien mit Selenium WebDriver herunter
Wenn Sie Selenium verwenden, um das Surfen zu automatisieren, Möglicherweise müssen Sie Dateien herunterladen. Das Problem ist, dass, Sobald wir den Download-Link auswählen und anklicken, ein natives Dialogfenster erscheint, das manuelle Eingriffe erfordert. Selenium hat keine Kontrolle über die Dateidownloadfenster Ihres Browsers, kann den Downloadvorgang nicht fortsetzen. Glücklicherweise, es gibt immer alternativen.
Um dieses Problem zu lösen, Sie können Ihren Browser autorisieren, Dateien im Voraus automatisch herunterzuladen, und einen Standardspeicherort für Download-Dateien festlegen. Dies kann durch Festlegen der Einstellungen für das WebDriver-Profil erfolgen (Der folgende Code ist für einen Firefox-Browser, Möglicherweise müssen Sie es anpassen, damit es in anderen Browsern funktioniert):
importieren download_dir = os.getcwd()# aktuelles Arbeitsverzeichnis Profil = webdriver.FirefoxProfile() profile.set_preference("browser.download.folderList", 2) # der benutzerdefinierte Speicherort browser.download.dir ist aktiviert, wenn browser.download.folderList gleich ist 2 profile.set_preference('browser.download.dir', download_dir) profile.set_preference("browser.download.manager.showWhenStarting", Falsch) profile.set_preference("browser.download.dir", Weg) profile.set_preference('browser.helperApps.neverAsk.saveToDisk', INHALTSTYP) profile.set_preference("webdriver_enable_native_events", Falsch) profile.set_preference("browser.download.manager.scanWhenDone",Falsch) profile.set_preference("browser.download.manager.useWindow",Falsch) profile.set_preference("browser.helperApps.alwaysAsk.force",Falsch) profile.update_preferences() browser = webdriver.Firefox(firefox_profile=profil)
Sie haben vielleicht bemerkt, dass CONTENT_TYPE
Variable, die Sie ersetzen müssen. In Wirklichkeit, entspricht dem MIME-Typ der Datei, die Sie herunterladen. Wenn Sie mit diesem Begriff nicht vertraut sind, Mime Typ es ist einfach eine Kennung, die verwendet wird, um eine Art von Daten für Inhalte im Internet zu erkennen. Sie dient im Internet dem gleichen Zweck wie Dateierweiterungen in Ihrem Betriebssystem.
Um Ihre Aufgabe zu vereinfachen, Ich habe die MIME-Typen der gängigsten Erweiterungen aus Mozilla-Webdokumenten entfernt, um den Zugang zu erleichtern. Im Widget unten, Sie finden den Code, den Sie verwenden müssen, um den Inhaltstyp zu erhalten, der Ihrer Dateierweiterung entspricht. Sie können die Konsole verwenden, um es sofort zu testen!!
Sie können die JSON-Datei erhalten, indem Sie sie aus dem obigen Widget kopieren und einfügen oder sie herunterladen von Github.
Jetzt, Ihr WebDriver sollte in der Lage sein, herunterzuladen, ohne um Erlaubnis zu fragen oder Dialogfenster anzuzeigen 😉