自動ログイン等を前提としてChrome操作を行うにはセッション情報(Cookie情報)を取得する必要があります。SeleniumBasicでも、過去蓄積したセッション情報(Cookie情報)を利用する方法があります。今回はその方法について紹介します。
事前準備
- テンポラリフォルダを作成する。場所は任意です。Chromeのユーザデータを保存するために作成します。
例:D:\tmp\chrome_vba
- Chromeのショートカットを作成する。-user-data-dirには、先ほど作成したテンポラリフォルダを指定してください。
“C:\Program Files (x86)\Google\Chrome\Application\chrome.exe” –user-data-dir=”D:\tmp\chrome_vba”
- 作成したショートカットでChromeを起動する(先ほどのフォルダにユーザデータが作成されます)。対象サイトへログインしてCookie情報を残してください。(Cookie情報の仕込みですね)
- 最後にChromeを閉じる。
サンプルプログラム
ポイントは、dr.AddArgument(“user-data-dir=D:\tmp\chrome_vba”)です。指定フォルダのユーザデータを利用してChromeを起動します。このフォルダに保存されたCookie情報が使用されるため自動ログイン等が有効になります。
Option Explicit
Sub sample()
Dim dr As New Selenium.WebDriver
Dim el As WebElement
dr.AddArgument("user-data-dir=D:\tmp\chrome_vba")
dr.Start "chrome"
dr.Get "https://www.yahoo.co.jp"
Stop
End Sub
注意事項
通常利用しているChromeのユーザデータを指定してChrome起動することもできます。(フォルダは「C:\Users\<ユーザ名>\AppData\Local\Google\Chrome\User Data」になると思います)
しかし「通常起動のChrome」と「Seleniumbasicで起動のChrome」が同時起動するとEXCELがオートメーションエラーで落ちます。開発・試験に影響がでますので、ユーザデータは別にすることをお勧めします。