seleniumでChromeを使う際にログイン状態を維持する方法と、その際に起こりうるエラーへの対処法についてご紹介します。
問題1: seleniumのChromeでログイン状態を維持したい
seleniumでChromeを起動すると、毎回パスワード等のログイン情報が求められる。
毎回ログインし直すのは面倒くさいので、seleniumのChromeで自動的にログイン状態を維持したい。
問題1の解決法
seleniumのwebdriverでChromeのプロフィールを利用する。
コードで書くと以下のようになります。
from selenium import webdriver
options = webdriver.chrome.options.Options()
profile_path = 'path_to_chrome_profile'
options.add_argument('--user-data-dir=' + profile_path)
driver = webdriver.Chrome(executable_path='path_to_chromedriver', options=options)
このprofile_pathのパスは、Chromeのバージョン情報(Chromeのアドレスバーにchrome://version/と入力すると出てくる)の「プロフィール パス」に対応するパスです。
(私の環境だと、/Users/username/Library/ApplicationSupport/Google/Chrome/Profile1
になっています。)
問題2: InvalidArgumentExceptionが発生する
問題1の解決法で以下のようなエラーが出る。
selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: user data directory is already in use, please specify a unique value for --user-data-dir argument, or don't use --user-data-dir
問題2の解決法
現在起動しているChromeとseleniumのwebdriverで指定したプロフィールが同一のものの場合に起こるそうです。
私の場合は、既に起動しているChromeで使用しているユーザーとは別のユーザーのプロフィールパスを指定するだけで解決しました。
別のプロフィールが存在しない場合は、Chromeブラウザの右上にある自分自身のアイコンをクリックすると他のユーザーを追加する項目があるので、そちらから作成します。
以上です。お疲れ様でした。
コメント
heliumでログイン情報を保持する方法はありますか?
heliumは使ったことがない為、当方ではわかりかねます。
お役に立てず、すみません。