「Firefoxでもダウンロードファイルの動作テストをしたい!」
と思うかもしれない。
FirefoxProfileで解決する!
ソースコード
import os
from selenium import webdriver
from selenium.webdriver import FirefoxProfile
profile = FirefoxProfile()
profile.set_preference("pdfjs.disabled",True) #PDFをブラウザのビューワーで開かせない
profile.set_preference("browser.download.folderList",2) #指定したフォルダにダウンロードする
profile.set_preference("browser.download.dir",os.getcwd() + "\\download") #ダウンロード先のフォルダ
driver = webdriver.Firefox(executable_path=os.getcwd() + "\\webdriver\\geckodriver.exe",firefox_profile=profile)
#IPAから「Web Application Firewall 読本」のPDFをダウンロードする
driver.get("https://www.ipa.go.jp/security/vuln/waf.html")
driver.find_element_by_xpath('//*[@id="ipar_main"]/div/div/div[3]/table/tbody/tr/td[2]/ul[1]/li/a').click()
Firefoxのデフォルトではダウンロード先のフォルダを指定できないし、PDFはビューワーで開いてしまうので「FirefoxProfile」でその設定を変更します。
とりあえずサンプルコードはIPAで公開しているPDFをダウンロードしてます。
PDFをブラウザのビューワーで開かせない
profile.set_preference("pdfjs.disabled",True) #PDFをブラウザのビューワーで開かせない
デフォルトだとPDFを内部ビューワーで開いてしまい、ダウンロードできないので、ビューワーを使わないようにします。
ダウンロード先のフォルダを指定できるようにする
profile.set_preference("browser.download.folderList",2) #指定したフォルダにダウンロードする
デフォルトは1、
変更しなかった場合は「C:\Users\ユーザ名\Downloads」になってます。
ダウンロード先のフォルダ
profile.set_preference("browser.download.dir",os.getcwd() + "\\download") #ダウンロード先のフォルダ
ダウンロード先のフォルダを指定、
指定しなかった場合は「C:\Users\ユーザ名\Downloads」になってます。
指定するには「browser.download.folderList」も併せて変更しておく必要アリ。