2019.5.27
系統環境:Windows 10 Pro 1809,Firefox 67.0
Firefox 火狐瀏覽器 - 全新、安全、快速 | 官方最新下載
Firefox用着還是不錯的,除了兩點:一是Flash開不了,二就是這個下載彈窗。zip、docx這些能設置自動保存,然後彈出窗口選擇路徑,但有些文件就是不行,比如rar、ipynb(Anaconda Jupyter Notebook),不能勾選“以後自動採用相同的動作處理此類文件”。這要是下載多個文件,總得彈個窗問你是打開還是保存這實在是太討厭了。
打開設置,實際上設置自動保存就是在這裏,ZZ的是不能自定義某類型文件的動作。在網上找了找,但帖子時間都很老,說到mimeTypes.rdf,現在版本的Firefox根本就沒有,新建一個把那些帖子上寫的什麼格式的代碼粘進去也沒用。拿圖爲證:
瀏覽器菜單-->幫助-->故障排除信息,打開後實際上就是about:support,瀏覽器地址欄輸入這個也能進入。
打開這個文件夾,裏面是Firefox的配置文件,about:config中改動了什麼在pref.js都會看到。所以那mimeTypes.rdf在哪呢?根本就沒有!
於是想從about:config中想想辦法。因爲是保存文件,就輸個save進去,結果發現驚喜:
看到這個browser.helperApps.neverAsk.saveToDisk,意思顯而易見,我們搜索helper,又看到了其它選項。
可這要怎麼用?上圖的結果是我應經改好的,但剛遇到時默認值是空的,我沒注意類型以爲就填個true或false就完事了,然後毛用沒有。一看pref,js,發現這項我填的true沒錯,但打了雙引號,其他的true是沒雙引號的,這就明白了:這是字符串,不是布爾值。
國內網站是沒戲了,根本找不到什麼,國外網站上搜一搜,發現了鏈接[2],雖然說用Java改什麼東西,但能用about:config何必搞那玩意(其實我不會Java)。看到了這一句我大概就明白了這裏字符串要填什麼:firefoxProfile.setPreference("browser.helperApps.neverAsk.saveToDisk","text/csv");
顯然csv是文件類型的一種,當作text,直接save to disk。我現在正下載一堆ipynb文件,但設置text/ipynb和application/ipynb似乎都不行,可能是沒有匹配的程序。
在鏈接[3]中我找到了我的正解:
firefoxProfile.setPreference("browser.helperApps.neverAsk.saveToDisk","application/octet-stream");
所以在about:config中我輸入了application/octet-stream,這下就能直接保存ipynb文件了,沒有再彈窗提示我是否要保存或打開文件。結果圖上面已有。
在鏈接[3]中看到這樣一句話:
firefoxProfile.setPreference("browser.helperApps.neverAsk.saveToDisk","application/xml,text/plain,text/xml,image/jpeg,text/csv");
所以這個字符串怎麼用就很清楚了:/之前可以寫text、application、image,/之後寫文件類型,多個文件類型用半角逗號分隔。
在本次探索中發現了一些有趣的選項:
browser.download.forbid_open_with,這個值是個布爾值,我選擇了True。
browser.altClickSave 這不就360、搜狗瀏覽器的快速保存嘛,但我還沒試過。
參考鏈接:
[1]browser.helperApps.neverAsk.saveToDisk preference isn't working with protractor for firefox | 易學教程
https://www.e-learn.cn/content/wangluowenzhang/979567
[2]How to download any file and save it to the desired location using Selenium Webdriver - Stack Overflow
https://stackoverflow.com/questions/16746707/how-to-download-any-file-and-save-it-to-the-desired-location-using-selenium-webd/16765032
[3]Firefox downloading file without window · Issue #7174 · SeleniumHQ/selenium-google-code-issue-archive · GitHub
https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/7174