🤖
chrome拡張をseleniumのブラウザに取り込む
はじめに
第三者のchrome拡張を使ったwebサイトのend2endのテスト環境を作ってみたところ、
手作業をけっこう減らせたのでこの記事にまとめておきます。
環境
- macOS:m2
- Python 3.10.6
- selenium 4.11.2
実行方法
git clone https://github.com/GoogleChrome/chrome-extensions-samples.git
mkdir sample; cp ./chrome-extensions-samples/functional-samples/tutorial.hello-world/* ./sample/
openssl genpkey -algorithm RSA -out my-extension.pem
openssl pkcs8 -topk8 -inform PEM -outform PEM -in my-extension.pem -out my-extension_pkcs8.pem -nocrypt
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
--pack-extension=./sample \
--pack-extension-key=./my-extension_pkcs8.pem
python main.py
説明
https://github.com/GoogleChrome にChrome拡張のサンプル集があるのでそこからdownloadした後に、最も簡単なhello worldのサンプルをコピーしてきます。
git clone https://github.com/GoogleChrome/chrome-extensions-samples.git
mkdir sample; cp ./chrome-extensions-samples/functional-samples/tutorial.hello-world/* ./sample/
次に、.crxファイルを作成します。(.crxファイルはブラウザからでも作れるので、この作業を置き換えることは可能)
openssl genpkey -algorithm RSA -out my-extension.pem
openssl pkcs8 -topk8 -inform PEM -outform PEM -in my-extension.pem -out my-extension_pkcs8.pem -nocrypt
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
--pack-extension=./sample \
--pack-extension-key=./my-extension_pkcs8.pem
pythonでseleniumにやらせたい処理を実行
python main.py
main.py
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.chrome.options import Options
service = ChromeService(executable_path="/opt/homebrew/bin//chromedriver")
options = Options()
#options.add_argument('--headless')
options.add_extension("./sample.crx")
driver = webdriver.Chrome(service=service,options=options)
# seleniumにやらせたい処理を書く
time.sleep(10)
options.add_extension("./sample.crx")が .crxファイルを読み込む処理です。
手作業
うまくいけば、拡張機能をclickしたときに、hello worldとpop upが表示されます。
※拡張機能をclickするという操作をseleniumから実行する方法は見つけられませんでした。
最後に
・おおむねやりたいことはできたのでよし
・chatGPTに.crxファイルの作成方法を聞いたらすぐ解決してくれた 便利
・拡張機能をclickするテストは手作業でやらないといけない状況なのでやや不便
Discussion