【Python】seleniumでログイン情報を保持する【Chrome】

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で指定したプロフィールが同一のものの場合に起こるそうです。

SeleniumでChromeのユーザープロファイルを指定しつつ同時に自分もChromeを使う方法 - Qiita
#はじめに 初めてQiitaで記事を書かせていただきます。最近プログラミングの勉強を始めた者です。 前置きはさておき、やりたかったのは**SeleniumでChromeを動かすときに、特定のユーザープロファイルを指定したい。**です...

私の場合は、既に起動しているChromeで使用しているユーザーとは別のユーザーのプロフィールパスを指定するだけで解決しました。

別のプロフィールが存在しない場合は、Chromeブラウザの右上にある自分自身のアイコンをクリックすると他のユーザーを追加する項目があるので、そちらから作成します。

以上です。お疲れ様でした。

コメント