【问题标题】:How to download XML file using Firefox driver, Selenium, python如何使用 Firefox 驱动程序、Selenium、python 下载 XML 文件
【发布时间】:2020-10-27 14:23:44
【问题描述】:

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

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

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

Screenshot from Network tab on Firefox

在阅读了here以及this reddit post的一些答案后,我正在使用:

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。

我做错了什么?

谢谢!

【问题讨论】:

    标签: python selenium firefox


    【解决方案1】:

    对我来说,经过多次试验和错误后,这行得通(它是 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);
    

    【讨论】:

      【解决方案2】:

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

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

      它对我有用。 PS:忽略我蹩脚的英语,我是巴西人。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-17
        • 1970-01-01
        • 2021-05-30
        • 2014-01-03
        • 1970-01-01
        • 2016-04-04
        • 1970-01-01
        相关资源
        最近更新 更多