前提・実現したいこと
seleniumを使い、chromeでwebページを自動でPDFとして印刷、保存しようとしています。
具体的なステップを記述しますと、
1.指定フォルダの中にあるxlsxファイルを開き、指定したセルの値を読み込み、その値と同名のフォルダを作成
2.chromeを起動し、google.comを開く
3.検索フォームに1で読み込んだ値を入力し、検索を実行
4.検索結果の1番目をクリックし、ページを開く
5.開いたページをPDFとして印刷し、1で作成したフォルダに保存
となります。実行するとエラーメッセージが表示されることもありません。しかし、プロセスが最後まで進んだ際に保存ダイアログでファイル名が空白となり保存が実行されません。また、保存先として開かれたフォルダは指定したフォルダではなく、デフォルトのダウンロードフォルダです。
プログラミング自体ほぼ初めてであり、知識・スキル不足により自身での解決に至りませんでした。ご助力をお願い致します。
該当のソースコード
python3
1import os 2import openpyxl 3from selenium import webdriver 4 5 6# Excelファイルのロード(読み取り専用) 7excel_path='C:/xlsxファイルのアドレス' 8wb = openpyxl.load_workbook(filename=excel_path, read_only=True) 9 10ws = wb['Sheet1'] #シートのロード 11 12folder_name1 = str(ws['B3'].value) #セルB3の値を読み込み、変数に格納 13folder_name2 = str(ws['C3'].value) #セルC3の値を読み込み、変数に格納 14 15os.chdir('C:/作業ディレクトリ') #作業用ディレクトリへの移動 16 17if not os.path.exists(folder_name1): 18 os.makedirs(folder_name1) #親フォルダの作成 19 20os.chdir(folder_name1) #親フォルダ内への移動 21 22if not os.path.exists(folder_name2): 23 os.makedirs(folder_name2) #子フォルダを作成する 24 25os.chdir(folder_name2) #子フォルダ内への移動 26c_path = os.getcwd() #カレントディレクトリの取得 27 28driver = webdriver.Chrome() #chrome用webドライバーの読み込み。 29driver.get('https://www.google.com/?hl=ja') #googleを開く 30 31search = driver.find_element_by_name('q') #検索ボックスの指定 32search.send_keys(folder_name2) #検索ワードに変数を指定 33search.submit() #検索実行 34 35element = driver.find_element_by_class_name("LC20lb") #検索結果の要素を指定 36element.click() #クリック実行 37driver.implicitly_wait(3) #3秒待機 38 39options = webdriver.ChromeOptions() 40 41prefs = {"download.default_directory" : "c_path"} #保存先フォルダをカレントディレクトリに設定 42options.add_experimental_option("prefs",prefs) 43options.add_argument('--kiosk-printing') 44 45driver = webdriver.Chrome(options=options) 46 47driver.execute_script('window.print();') 48 49os.chdir('C:/作業ディレクトリ') #作業ディレクトリへ戻る
環境
windows10 64bit
python3.8.2
pycharm2020.1
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。