【Selenium】Chromeの拡張機能を起動する方法(Python)

- Python -
2021.05.22
Python[パイソン]

Python × Selenium × ChromeDriverでGoogle Chromeを起動すると、通常だと拡張機能はまっさらな状態で起動してしまいます。

selenium chromedriverで拡張機能実行

でも、↓こんなふうに「拡張機能も同時に起動したい」ということがあったので、方法をメモしておきます。

selenium chromedriverで拡張機能実行

ChromeDriverに"拡張機能実行オプション"を与えることで、実現できました。

【Selenium】ChromeDriverを拡張機能あり状態で起動する

  1. 起動する拡張機能のIDを調べる
  2. 拡張機能が保存されているフォルダーパスを調べる
  3. "拡張機能起動オプション"を与えてコード実行

この3ステップです。順番に説明していきます。

1. 起動する拡張機能のIDを調べる

まず、chrome拡張機能のIDを確認しましょう。

chromeを開き、右上三点マーク > その他のツール > 拡張機能 をクリック。

selenium chromedriverで拡張機能実行

拡張機能ページが開くので、右上の「デベロッパー モード」をオン状態に変える。すると、以下赤下線部に拡張機能ごとにIDが表示されるので、これをコピーしてメモしておきます。

selenium chromedriverで拡張機能実行

2. 拡張機能が保存されているフォルダーパスを調べる

拡張機能プログラムが保存されているフォルダを探しましょう。

以下、拡張機能を普通にインストールするとこのフォルダに入るよね、という一般的なフォルダまでのパスです。参考に探してみてください(以下と違う場合もありえます)。

拡張の一般的な場所# Mac
/Users/<ユーザー名>/Library/Application\ Support/Google/Chrome/Default/Extensions/
# Windows
C:\Users\<ユーザ名>\AppData\Local\Google\Chrome\User\Data\Default\Extensions

見つかったExtensionsフォルダ配下にはズラッと拡張機能のIDごとのフォルダがあるので、手順1. でメモしておいた目的の拡張機能のIDと照らし合わせて見つけます。

~ $ ls /Users/yuki/Library/Application\ Support/Google/Chrome/Default/Extensions/
Temp/
fklnhlgfamfeknafaldenkmoeccpkmmf/
aapocclcgogkmnckokdopfmhonfmgoek/
fllaojicojecljbmefodhfapmkghcbnh/
aghfnjkcakhmadgdomlmlhhaocbkloab/
gppongmhjkpfnbhagpmjfkannfbllamg/
aohghmighlieiainnegkcijnfilokake/
inomeogfingihgjfjlpeplalcfajhgai/ ←コレ
apdfllckaahabafndbhieahigkjlhalf/
mgijmajocgfcbeboacabfgobmjgjcoja/
bhlhnicpbhignbdhedgjhgdocnmhomnp/
nkbihfbeogaeaoehlefnkodbefgpgknn/
blpcfgokakmgnkcojhhkbfbldkacnbeo/

目的の拡張機能のフォルダの中に、manifest.jsonというファイルが入っているフォルダまでのパスをメモします。

~ $ ls /Users/yuki/Library/Application\ Support/Google/Chrome/Default/Extensions/inomeogfingihgjfjlpeplalcfajhgai/1.5_0
chromium_event_page_binary.js
chromoting48.png
chromoting128.png
manifest.json

↓今回の例だと、これが後で必要なパス
/Users/yuki/Library/Application Support/Google/Chrome/Default/Extensions/inomeogfingihgjfjlpeplalcfajhgai/1.5_0

3. "拡張機能起動オプション"を与えてコード実行

以下ただ単純にChromeを起動するだけの単純なコードですが、8行目で拡張機能を起動するオプションを設定するのがミソです。

test.pyimport chromedriver_binary
from selenium import webdriver

extension_path = '/Users/yuki/Library/Application Support/Google/Chrome/Default/Extensions/inomeogfingihgjfjlpeplalcfajhgai/1.5_0'

options = webdriver.ChromeOptions()
options.add_argument(
    f'load-extension={extension_path}')

driver = webdriver.Chrome(options=options)
driver.get('https://google.com')

4行目のパス部分を手順2. で調べたとおりにあなたの環境に合わせて置き換えてください。

これで実行すると、拡張機能がアクティブになった状態でブラウザが起動しました。

selenium chromedriverで拡張機能実行

 

"マニフェスト ファイルが見つからない"とエラーが出る場合

selenium chromedriverで拡張機能実行

僕の例をメモしておくと、手順3. で実行したコードのextension_pathに"バックスラッシュ(\) + 半角スペース"が含まれていたためこのエラーが出た、ということがありました。

もし同じようになっている場合は、半角スペースの前にあるバックスラッシュのみ削除して実行してみてください(以下赤文字)。

/Users/yuki/Library/Application\ Support/Google/Chrome/Default/Extensions/inomeogfingihgjfjlpeplalcfajhgai/1.5_0

※半角スペースはそのままでOK

↑TOP