end0tknr's kipple - 新web写経開発

http://d.hatena.ne.jp/end0tknr/ から移転しました

selenium + python3 + chrome driver でfileの自動保存

IEにおいては、selenium単体では難しいらしく、

Firefox(geckodriver)においては、ダウンロード後にブラウザを操作できなくなり (インターネットではダウンロードできるような情報がありましたが、私の環境ではNG)

結局、chromedriverで次のように書きました。

#!/usr/local/bin/python
# -*- coding: utf-8 -*-
import getopt
import os
import sys
from selenium import webdriver
import unittest  # https://docs.python.jp/3/library/unittest.html
from time import sleep

CONF = {}

class TestSample(unittest.TestCase):

    def setUp(self):    # test前の準備
        chopt = webdriver.ChromeOptions()
        # chromeのviewerで開かず、現在のdirに保存
        prefs = {"download.default_directory" : os.getcwd(),
                 "download.prompt_for_download": False,
                 "download.directory_upgrade": True,
                 "plugins.plugins_disabled": ["Chrome PDF Viewer"],
                 "plugins.always_open_pdf_externally": True}
        chopt.add_experimental_option("prefs",prefs)
        # SSLエラー対策らしい
        chopt.add_argument('--ignore-certificate-errors')
        chopt.add_argument("--disable-extensions")
        chopt.add_argument("--disable-print-preview")

        self.browser = webdriver.Chrome(chrome_options = chopt)
    
    def tearDown(self): # test後の後始末
        self.browser.quit();
    
    def test_1(self):
        self.browser.get("http://cent7.a5.jp/hogehoge/foo.pdf")
        self.browser.get("http://www.yahoo.co.jp")

if __name__ == '__main__':
    unittest.main(verbosity=2)