Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
15
Help us understand the problem. What is going on with this article?
@Hidenatsu

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

More than 1 year has passed since last update.

はじめに

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

15
Help us understand the problem. What is going on with this article?
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.
Sign Up
If you already have a Qiita account Login
15
Help us understand the problem. What is going on with this article?