Ausgabe
Ich habe ein Problem mit einem Python-Skript, das Selen mit Mozilla Firefox verwendet. Wenn die Skripte die gewünschte Datei herunterladen und den Vorgang abschließen, öffnet Mozilla den Download-Dialog und sagt, dass der Download in meiner rechten oberen Ecke des Fensters abgeschlossen ist. Ich muss dieses Fenster schließen, aber ich konnte es nicht erreichen, das Fenster zu schließen und das Skript zu beenden.
Was könnte ich tuen?
from selenium import webdriver
import unittest
from selenium.webdriver.common.keys import Keys
import time
import requests
#################################################################################
options = webdriver.FirefoxOptions()
options.set_preference("browser.download.manager.showAlertOnComplete", False)
options.set_preference("browser.download.panel.shown", False)
options.set_preference("browser.download.animateNotifications", False)
options.set_preference("browser.helperApps.alwaysAsk.force", False)
options.set_preference("browser.download.manager.showWhenStarting", False)
options.set_preference(
"browser.helperApps.neverAsk.saveToDisk",
(
"application/pdf, application/zip, application/octet-stream, "
"text/csv, text/xml, application/xml, text/plain, "
"text/octet-stream, application/x-gzip, application/x-tar "
"application/"
"vnd.openxmlformats-officedocument.spreadsheetml.sheet"
),
)
###############################################################################3
browser=webdriver.Firefox(options=options)
browser.get('http://10.1.0.100:4025/accounts/login/?next=/')
time.sleep(3)
id_box=browser.find_element("id","id_username")
id_box.send_keys('admin')
time.sleep(1)
pass_box=browser.find_element("id","id_password")
pass_box.send_keys('changeme')
time.sleep(1)
login_button = browser.find_element("name","submit")
time.sleep(1)
login_button.click()
time.sleep(1)
browser.get("http://10.1.0.100:4025/backup/list")
time.sleep(4)
generate_button=browser.find_element("id","generate")
generate_button.click()
alert = browser.switch_to.alert
try:
alert.accept() #If you want to Accept the Alert
except:
alert.dismiss() #If You want to Dismiss the Alert.
time.sleep(25)
browser.get("http://10.1.0.100:4025/backup/download/all")
time.sleep(5)
################################################
################################################
time.sleep(5)
browser.close()
Lösung
Es gibt viele Möglichkeiten, das standardmäßige Download-Verhalten in Firefox zu ändern. Sie können die folgenden Optionen verwenden, um zu verhindern, dass dieses Download-Fenster überhaupt angezeigt wird:
from selenium import webdriver
options = webdriver.FirefoxOptions()
options.set_preference("browser.download.manager.showAlertOnComplete", False)
options.set_preference("browser.download.panel.shown", False)
options.set_preference("browser.download.animateNotifications", False)
options.set_preference("browser.helperApps.alwaysAsk.force", False)
options.set_preference("browser.download.manager.showWhenStarting", False)
options.set_preference(
"browser.helperApps.neverAsk.saveToDisk",
(
"application/pdf, application/zip, application/octet-stream, "
"text/csv, text/xml, application/xml, text/plain, "
"text/octet-stream, application/x-gzip, application/x-tar "
"application/"
"vnd.openxmlformats-officedocument.spreadsheetml.sheet"
),
)
driver = webdriver.Firefox(options=options)
Beantwortet von – Michael Mintz
Antwort geprüft von – Terry (FixError Volunteer)