LoginSignup
39
30

More than 3 years have passed since last update.

SeleniumでChromeのユーザープロファイルを指定しつつ同時に自分もChromeを使う方法

Last updated at Posted at 2019-09-23

はじめに

初めてQiitaで記事を書かせていただきます。最近プログラミングの勉強を始めた者です。

前置きはさておき、やりたかったのはSeleniumでChromeを動かすときに、特定のユーザープロファイルを指定したい。です。

が、私の環境だと以下のようなエラーが発生し、Chromeを閉じてからでないとSelenium経由では起動してくれませんでした。
"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"

どうやら今起動しているChromeが参照しているユーザプロファイルがあるフォルダと同じフォルダをSeleniumで指定することはできないようです。
このままでは、SeleniumからChromeを起動する度に、いつも使っているChromeを閉じなければなりません。めんどくさいです
そこで、ユーザプロファイルが置かれるフォルダを新しく作って、そちらを参照してみるとうまくいきました。

環境

  • Windows 10 Home
  • Selenium(C#用) v3.14
  • Chrome v75
  • Powershell v5.1

私はPowershellを使っていますが、記事の内容自体はChromeのプロファイルの指定の方法なので言語は問わないと思います。

通常とは別のユーザープロファイルを置くフォルダを作る

Chromeを起動するときにオプションで任意のフォルダを指定してやれば、そのフォルダがユーザープロファイルを置くフォルダuser data directoryになってくれるようです。
起動時のオプションとして--user-data-dir=の後に適当なフォルダを指定するだけです。

例えば以下のようなコマンドになります。「ファイル名を指定して実行」で実行してやればOKです。
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --user-data-dir="C:\Learn\tools\test"

コマンドを実行するとChromeが起動するので、Selenium用のユーザを作成してやります。
ユーザの作成方法はこちら(Chrome公式のヘルプ)に手順があります。

ユーザを作成すると、指定したフォルダ内にProfile 1というフォルダができるので、そのフォルダをSeleniumでのChrome起動時にオプションで指定してやります。
Profile 1となるのは、そのフォルダをオプションで指定して初めてユーザを作成した場合の名前です。複数ユーザを作った場合は末尾の番号が増えていきます。

ユーザプロファイルを指定してSeleniumからChromeを起動する

Powershellで書くとこんな感じなりました。

$chromeDriverDirPath = "C:\\Learn\tools\\selenium\\chromedriver.exe"
$options = New-Object OpenQA.Selenium.Chrome.ChromeOptions

#プロファイルを指定
$PROFILE_PATH = "C:\\Learn\\tools\\test"
$options.AddArgument("--user-data-dir=$PROFILE_PATH") 
$options.AddArgument("--profile-directory=Profile 1")

#プロファイルを指定してchrome起動
$chromeDriver = New-Object OpenQA.Selenium.Chrome.ChromeDriver($chromeDriverDirPath, $options)

Chromeの起動オプションについては詳細な解説をしていただいている記事があるので割愛します。
参考:Python + Selenium + Chrome で自動ログインいくつか

実行して、右上に指定したユーザのアイコンが表示されていたので成功です。
ユーザプロファイル起動.png

起動後に、Webサービスなどに一度ログインしておけば、次回からはログインをスキップできたりして、手間が省けます。やったー

39
30
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
39
30