簡體   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