Help us understand the problem. What is going on with this article?

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

はじめに

初めて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サービスなどに一度ログインしておけば、次回からはログインをスキップできたりして、手間が省けます。やったー

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした