Selenium Firefox 在下载文件后卡住

Selenium Firefox stuck after downloading a file

提问人:Sandy 提问时间:8/12/2022 更新时间:10/18/2022 访问量:470

问:

我正在使用 python selenium(最新版本)和 geckodriver 0.31.0 和 Firefox 103 登录网站并下载文件,但下载文件后,浏览器卡住了,从未调用过。browser.quit()

这是相关代码:

s = Service(DRIVER_PATH)

firefox_options = Options()
firefox_options.set_preference("browser.download.folderList", 2) # to not use the default directory for downloading the file
firefox_options.set_preference("browser.download.manager.showWhenStarting", False) # turns off the showing of download progress
firefox_options.set_preference("browser.download.dir", "/home/<myuser>/")
firefox_options.set_preference("browser.download.directory_upgrade", True)
firefox_options.set_preference("browser.download.prompt_for_download", False)
firefox_options.set_preference("browser.download.manager.showWhenStarting", False)
firefox_options.set_preference("browser.download.manager.alertOnEXEOpen", False)
firefox_options.set_preference("browser.download.manager.focusWhenStarting", False)
firefox_options.set_preference("browser.helperApps.alwaysAsk.force", False)
firefox_options.set_preference("browser.download.manager.alertOnEXEOpen", False)
firefox_options.set_preference("browser.download.manager.closeWhenDone", True)
firefox_options.set_preference("browser.download.manager.showAlertOnComplete", False)
firefox_options.set_preference("browser.download.manager.useWindow", False)
firefox_options.set_preference("services.sync.prefs.sync.browser.download.manager.showWhenStarting", False)
firefox_options.set_preference("pdfjs.disabled", True)

firefox_options.add_argument("--disable-infobars")
firefox_options.add_argument("--disable-extensions")
firefox_options.set_preference("network.proxy.socks_remote_dns", True)

browser = webdriver.Firefox(service=s, options=firefox_options)

browser.get(URL)

browser.find_element(By.NAME, "login").send_keys(USER)
browser.find_element(By.NAME, "password").send_keys(PASSWORD)
browser.find_element(By.CLASS_NAME, CLASS).click()

# download file
browser.get(URL + "feed.rss")

time.sleep(3)

browser.quit()

我知道我可以通过传递 selenium cookie 来使用 python 下载文件,但我需要使用 Selenium 下载文件。requests

python-3.x Selenium Gecko驱动程序

评论


答:

2赞 Jonas 10/18/2022 #1

Firefox 102.3 显示了带有此配置文件的下载窗口(至少在 java 中)。我需要添加以下配置行:

“browser.download.alwaysOpenPanel” = 假

我不确定这是否对 python 有帮助,或者这是否是问题所在。在 selenium-java 中,如果有一个弹出窗口(“显示所有下载”),我会用某些代码来失去焦点。

评论

0赞 Pierre 11/3/2022
我在 Python 上遇到了完全相同的问题,但这并不能解决我的问题 (Firefox 106.0.3)。