Ein wenig spät, aber diese Frage eine gute Anzahl von Ansichten hat, dachte ich, es ist die Zeit es für den Fall lohnen würde, Ihnen zu antworten sind nicht weitergezogen oder jemand anderes begegnet ihm.
Ich lief auch in das gleiche Problem und dachte, ich würde teilen. Ich entwickelte damals in Python, aber das gleiche Konzept gilt. Sie müssen den eigentlichen Download nicht mit Selen durchführen. Anstatt auf das Element zu klicken, um den Download zu starten, sollten Sie in Erwägung ziehen, den Link abzurufen und integrierte Funktionen zu verwenden, um von dort fortzufahren.
Das Element, auf das Sie normalerweise klicken würden, um den Download zu starten, sollte ein Attribut 'href' haben, das Sie mit Selen lesen können. Dies ist die URL, die auf die eigentliche Datei verweist. In Python sieht es ungefähr so aus:
element = driver.find_element_by_id('dl_link')
url = element.get_attribute('href')
Von hier aus können Sie eine HTTP-Bibliothek verwenden, um die URL aufzurufen. Der wichtige Teil hier ist, dass Sie 'stream' auf 'true' setzen, damit Sie mit dem Schreiben der Bytes in eine Datei beginnen können. Stellen Sie sicher, dass der Dateipfad die richtige Dateierweiterung enthält und eine andere Sache, die meisten Betriebssysteme erlauben es Ihnen nicht, Dateien mit bestimmten Zeichen wie Backslashes oder Zitaten zu benennen.
Das Programm sollte nicht fortgesetzt werden, bis der Download abgeschlossen ist, so dass es nicht mehr notwendig ist, bis zum Abschluss abzurufen.
Ich entschuldige mich für die Beantwortung in einer anderen Sprache, in Java glaube ich, dass Sie die HttpURLConnection API verwenden können. Hoffe das hilft!
Haben Sie eine Frage? –
Wie kann ich den Webdriver warten, bis ein Download abgeschlossen ist? – qaepk
Dies geht über die Möglichkeiten von WebDriver hinaus, sobald ein Download startet, ist es kein Browser-Vorgang mehr, daher kann WebDriver es nicht als solches steuern. Schau dir diesen Blog-Beitrag an, der sehr informativ ist, wenn es um dieses Thema geht. http://ardesco.lazerycode.com/index.php/2012/07/how-to-download-files-with-selenium-and-why-you-souldnt/ –