繁体   English   中英

如何使用 Firefox 驱动程序、Selenium、python 下载 XML 文件

[英]How to download XML file using Firefox driver, Selenium, python

我正在使用 Selenium 编写脚本,以从基于 MediaWiki 的网站的导出页面导出 XML 备份。

我希望将 XML 文件下载到一个目录,绕过通常询问我如何处理文件的弹出窗口。

当我在下载 .xml 文件时查看网络选项卡时,我看到(在响应标头下)内容类型为application/xml; 字符集=utf-8

Firefox 网络选项卡的屏幕截图

在阅读了这里的一些答案以及这篇 reddit 帖子后,我正在使用:

fp = webdriver.FirefoxProfile()
fp.set_preference("browser.preferences.instantApply",True)
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "text/plain, application/octet-stream, text/xml, application/xml")
fp.set_preference("browser.helperApps.alwaysAsk.force",False)
fp.set_preference("browser.download.manager.showWhenStarting",False)
fp.set_preference("browser.download.folderList",2)
    
driver = webdriver.Firefox(firefox_profile=fp, executable_path=r'C:\Python37\geckodriver.exe')
(...)
download_button.click()

但是,该窗口仍会弹出,并且文件并未下载到任何地方。

我确保更新 Selenium 和 geckodriver。

我究竟做错了什么?

谢谢!

我认为您应该将元组作为参数传递,如下所示:

fp.set_preference('browser.helperApps.neverAsk.saveToDisk', (text/plain, application/octet-stream, text/xml, application/xml))

这个对我有用。 PS:忽略我糟糕的英语,我是巴西人。

对我来说,经过多次反复试验后,这行得通(它是 Java,但应该可以转移到 Python):

profile.setPreference("browser.download.viewableInternally.previousHandler.alwaysAskBeforeHandling.xml", false);
profile.setPreference("browser.download.viewableInternally.previousHandler.preferredAction.xml", 0);
profile.setPreference("browser.download.viewableInternally.typeWasRegistered.xml", true);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM