Docker Selenium Grid node-chromeでユーザープロファイルを指定し前回の状態を引き継ぐ

docker selenium node-chromeユーザープロファイルの指定 Chrome

Windowsなどでブラウザを使っていると、当然のように前回使っていた情報が使われています。
例えばwindowsでchromeを使っていると下記パスに保存されています。

C:\Users\[ユーザー]\AppData\Local\Google\Chrome\User Data\Default

node-chromeでブラウザの自動操作やスクレイピングをするときも、毎度クッキーなどのデータがクリアされるのではなく前回の状態を保持しておきたい=プロファイルデータを使えばよいとなります。

スポンサーリンク

chrome://versionでnode-chromeの情報を見てみる

以前の記事でDocker Selenium GridとPythonコンテナ起動し、スクリプトでyahoo検索しました。

今回はchrome://versionを表示するようにすると、node-chromeでのユーザーデータがわかると思います。

もしくは、VNC上で右クリックしブラウザを開きます。

下記のようにchrome://versionと入力すると出てきます。
/home/seluser/.config/google-chrome/Defaultですね。

webdriver.optionにユーザープロファイルの場所を指定する

ユーザープロファイルはベースのディレクトリへのパス、どのユーザープロファイルディレクトリを使うか、の2つを指定します。
自分はnode-docker内の/home/seluser/chromedata/profile1としました。

from selenium import webdriver

options = webdriver.ChromeOptions()
userdir = r'/home/seluser/chromedata/profile1'
options.add_argument('--user-data-dir=' + userdir)

単一起動では問題なし。複数のnode-chrome起動時は注意

プロファイルディレクトリの重複はエラーになるようです。なので、複数のnode-chrome起動時はprofileディレクトリ名を1,2とするようスクリプトをうまく変更してください。

参考

Chromium Docs - User Data Directory
【Python】Seleniumのちょっとしたオプション機能
PythonでSeleniumのオプションについて紹介します。「Googleアカウントログイン状態で起動」「非表示での起動」「ウィンドウの最大化」の3点についてサンプルを紹介します。初心者にもわかりやすく説明しています。

コメント

タイトルとURLをコピーしました