今回はSeleniumでグーグルアカウントにログインした状態でブラウザを起動し、特定のサイトへのログイン状態を保存したままにしておく方法について紹介したいと思います
Seleniumでログイン状態を保存する
具体的にはログイン情報を保存した仮ユーザーを作成します
GoogleChromeではローカルのPCのどこかにユーザー情報を保管しているのでそれをSelenium起動時に参照するように変更します
プロファイルパスの確認
ブラウザ上部の検索欄に「chrome://version/」に入力して自分のアカウント情報のプロフィールが保存されている場所を確認します
参照
上記の画像の例だと\~~User Dataがアカウント情報を保存しているディレクトリで、「Default」というのがユーザー名になります。
グーグルアカウントにログインした状態でSeleniumを起動する
サンプルコードは以下になります
from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.chrome.options import Options profile_path = '自分PCのユーザー情報が保存されているパス~~User Data' account_name = 'Default' #User Data/(xxx)に表示されている名前、メインアカウントは基本「Default」に保存されているはずです options = Options() options.add_argument('--user-data-dir=' + profile_path) options.add_argument(f'--profile-directory={account_name}') options.add_argument('--disable-dev-shm-usage') # ドライバー定義 driver = webdriver.Chrome(ChromeDriverManager().install(), options=options) # ウィンドウサイズ固定(フレキシブルなタグ構成でエラーになると面倒なので) driver.set_window_size(1200,1000) # グーグルアカウント上にログイン情報を保存しているURL login_url = 'https://twitter.com/' # URLにアクセス driver.get(login_url) # デバック用 time.sleep(10) #driver.close() #driver.quit()
よくあるエラー
エラー全文
Unhandled exception:
UnknownException (500): unknown error: DevToolsActivePort file doesn’t exist
#0 parseW3cResponse (package:webdriver/src/handler/w3c/utils.dart:102:9)
#1 W3cSessionHandler.parseCreateResponse (package:webdriver/src/handler/w3c/session.dart:19:21)
#2 AsyncRequestClient.send (package:webdriver/src/common/request_client.dart:96:32)
<asynchronous suspension>
#3 createDriver (package:webdriver/async_core.dart:64:19)
<asynchronous suspension>
原因と対処法
詳細はわかりませんでしたが、自分の場合はオプション「–no-sandbox」を使用することで解決しました。また他にブラウザを開いている場合もこのエラーは発生するので他のChrmeのブラウザをすべて閉じてみてからプログラムを実行してみてください(自分はこれでうまくいきました)
関連記事:【Python】Seleniumでサイトのログイン情報を保存する方法
コメント
[…] 関連記事:SeleniumでGoogleアカウントにログインした状態で起動する方法 […]
[…] 関連記事:SeleniumでGoogleアカウントにログインした状態で起動する方法 […]
[…] 関連記事:SeleniumでGoogleアカウントにログインした状態で起動する方法 […]
[…] 関連記事:SeleniumでGoogleアカウントにログインした状態で起動する方法 […]