ruby + selenium webdriverをchrome拡張付きで起動する
本エントリーは、Selenium/Appium Advent Calendar 2017の12日目エントリーです。
chrome driverをextensionつきで起動
seleniumのchromedriverが起動するとChrome拡張無しで起動しますよね。
例えば広告をブロックする拡張やモノゾンなどのデータを表示してくれる拡張を有効にして実行したいシーンがあります。
今回はselenium webdriberをChrome拡張付きで起動する方法をご紹介します。
拡張からcrxファイルを作成する
windowsとmacではcrxファイルが違うことに注意
windowsでwebdriverを起動する場合とmacで起動する場合でそれぞれcrxファイルが違います。
windowsの場合はwindowsのChormeを使ってcrxファイルを作成し、macの場合はmacで作成しましょう。
windowsでcrxファイルを作成
まずはChromeで「chrome://extensions/」を開いて拡張機能の設定画面を開きましょう。
右上の「デベロッパーモード」にチェックを入れます。
その後その左にある「拡張機能のパッケージ化」をクリックしてcrxファイルにしたい拡張のpathを入力します。
windowsではデフォルトでは以下の場所にあります。
C:\Users\[ユーザ名]\AppData\Local\Google\Chrome\User Data\Default\Extensions\
この中で対象の拡張のIDを探します。IDの場所はChrome拡張機能の設定画面に記載されています。
そのIDが書かれたフォルダを「拡張機能のルートディレクトリ」で選択してください。
そのフォルダ内にpemファイルがある場合は秘密鍵ファイルにそちらを指定してください。
pemファイルがなければ空欄で大丈夫です。
これで先程のIDが書かれたフォルダの中にcrxファイルができました。
macの場合はmacでFinderを開いて
ユーザ名/Library/Application Support/Google/Chrome/Default/Extensions
を見てみましょう。手順は同じです。
拡張を読み込ませてchromedriverを起動
では、先程作ったcrxファイルをソースコードと同じディレクトリに置いて、
driverを宣言する時に以下のようにしてみましょう。
1 2 3 4 5 6 7 8 9 10 |
require 'selenium-webdriver' driver = Selenium::WebDriver.for :chrome, :desired_capabilities => Selenium::WebDriver::Remote::Capabilities.chrome({ 'chromeOptions' => { 'extensions' => [ Base64.strict_encode64(File.open('1.13.2_0.crx', 'rb').read)] } }) driver.get("http://google.co.jp") |
これで拡張付きで起動できましたね。
macで行う場合はmacで作成したcrxファイルを読み込ませることに注意してください。