Seleniumでファイルのダウンロード先を指定する (Firefox編)

「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」も併せて変更しておく必要アリ。

スポンサーリンク
おすすめの記事