Excel vbaでSeleniumを使ってChromeを操作しています。
実行環境:win7, Excel2016
#If VBA7 Then Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As LongPtr) #Else Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long) #End If Sub test() Dim driver As New Selenium.ChromeDriver Dim wkObj, wkNow On Error GoTo err wkNow = Now With driver ' ヘッドレスモードの設定 .AddArgument "headless" .AddArgument "disable-gpu" .start .get "https://www.japannetbank.co.jp/service/payment/web_all/csv_download.html" ' 「全銀形式~」のリンクをクリックすると、自動でダウンロードされる .FindElementByClass("listStyle04").FindElementByTag("a").Click Call Sleep(3000) End With Set driver = Nothing Set wkObj = Nothing MsgBox "処理が完了しました。処理時間" & DateDiff("s", wkNow, Now) & "秒" Exit Sub err: Debug.Print "err.Number=[" & err.Number & "], err.Description=[" & err.description & "], VBA.Erl=[" & VBA.Erl & "]" Set driver = Nothing Set wkObj = Nothing MsgBox "エラーとなりました。処理時間" & DateDiff("s", wkNow, Now) & "秒" End Sub
上記の実行によりCSVファイルがダウンロードされる想定ですが、されません。
ヘッドレスモードを設定する2行をコメント化すると、ダウンロードされます。
ダウンロードするためのvbaコードのヒント・参考となるサイトなど分かりましたら教えて下さい。
何をどう試せば良いのか、行き詰まっております。
なお、ネット上にPythonのサンプルコードは少なからず存在します。
例えば、Pythonのサンプルコード記載記事の一つはこちら。
https://qiita.com/zkangaroo/items/1c4d4c11b06e7823e7fe
また、本質問とは関係ないと思いますが、処理時間について以下の結果となりました。
ヘッドレスの場合:47秒ほど
通常モードの場合:7秒ほど
ヘッドレスの場合、サイトのロードに大幅に時間がかかっていることを確認済みです。
タイムオーバーになることすらあります。
これについても何か対応策があれば教えて下さい。
以上、宜しくお願いいたします。
5/1 追加で試したことの追記
上記コードの「.start」の直前に、以下のパターンでコードを追加して試しました。
しかし、いずれも例外は発生しないものの、ファイルはダウンロードされませんでした。
リファレンス・ドキュメントなどに記載を見つけることができなかったので、pythonコードを参考にして適当に試したものです。
.SetPreference "page.setDownloadBehavior.behavior", "allow"
.SetPreference "browser.setDownloadBehavior.behavior", "allow"
.SetPreference "download.setDownloadBehavior.behavior", "allow"
.SetPreference "setDownloadBehavior.behavior", "allow"
.SetPreference "page.setDownloadBehavior", "{'behavior':'allow'}"
.SetPreference "browser.setDownloadBehavior", "{'behavior':'allow'}"
.SetPreference "download.setDownloadBehavior", "{'behavior':'allow'}"
.SetPreference "setDownloadBehavior", "{'behavior':'allow'}"
.SetPreference "page.set_download_behavior.behavior", "allow"
.SetPreference "browser.set_download_behavior.behavior", "allow"
.SetPreference "download.set_download_behavior.behavior", "allow"
.SetPreference "set_download_behavior.behavior", "allow"
.SetPreference "page.set_download_behavior", "{'behavior':'allow'}"
.SetPreference "browser.set_download_behavior", "{'behavior':'allow'}"
.SetPreference "download.set_download_behavior", "{'behavior':'allow'}"
.SetPreference "set_download_behavior", "{'behavior':'allow'}"
.SetPreference "downloadBehavior", "allow"
.SetPreference "download.behavior", "allow"