テストでキャプチャをとって結果として納品せよ。
と言われたので自動化してみました。
ブラウザによってちょっとずつ違うので備忘録。
ちなみに私はフロントエンドエンジニア(仮)でPythonなんて基本業務では使わないような、なんちゃって野郎です🫠
そもそも、Pythonとは?
seleniumとは?みたいなところはすっ飛ばします。
やりたかったこと
- pythonで自動でキャプチャをとる
- ヘッドレスモードでの実行
windows Pythonインストール手順
1:pythonをダウンロード
上記でインストールすると、pipも併せてインストールされる。
2:Python --version
でpythonのインストールができているか確認
3:pip -V
でpipがインストールできているか確認
4:pip install selenium
5:pip list
でseleniumがインストールできているか確認
chorme
以下から自分が使用しているchromeのバージョンに一番近いものをクリック
「chromedriver_win32.zip」を選択
DLしたzipを解凍
chromedriver.exeというファイルを、実行ファイルと同階層に配置
ソース
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# ブラウザーを起動
options = Options()
options.add_argument("--headless") # headlessモードを使用する
options.add_argument("--disable-extensions") # すべての拡張機能を無効にする。ユーザースクリプトも無効にする
options.add_argument("--incognito") # シークレットモードで起動する
# オプションを指定しブラウザを起動
driver = webdriver.Chrome(executable_path="./chromedriver.exe", options=options)
driver.set_window_size(1300, 750)
# URLを開きスクショとる
driver.get("https://www.google.com/")
driver.save_screenshot("google.png")
Edge
以下コマンド実行
pip install msedge-selenium-tools
自分のEdgeのバージョンを確認
一番近いバージョンのwebdriverを空以下からインストール
自分のPCのbitに合わせたものをDL
解凍し、exeを実行ファイルと同階層に配置
ソース
from selenium import webdriver
from msedge.selenium_tools import Edge, EdgeOptions
# ブラウザーを起動
options = EdgeOptions()
options.use_chromium = True
options.add_argument("--headless")
options.add_argument("--disable-extensions") # すべての拡張機能を無効にする。ユーザースクリプトも無効にする
options.add_argument("--incognito") # シークレットモードで起動する
# edgeDriverの引数にオプションを指定しブラウザを起動
driver_path = "./msedgedriver.exe"
driver = Edge(executable_path=driver_path, options=options)
driver.set_window_size(1300, 750)
# URLを開きスクショとる
driver.get("https://www.microsoft.com/ja-jp/")
driver.save_screenshot("microsoft.png")
chromeとOptionの指定方法が少々異なる。
EdgeでOption指定のためにpip installするのがやや面倒だが、上記でchromiumでの表示ではやりたいことは大体できてる
Firefox
以下から最新のdriverをインストール
この記事制作時は以下が最新。
geckodriver-v0.32.2-win32.zip
解凍して、exeを実行ファイルと同階層に配置
ソース
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
import os
# ブラウザーを起動
options = Options()
options.binary_location = r"C:\Program Files\Mozilla Firefox\firefox.exe"
options.add_argument("--headless") # headlessモードを使用する
# オプションを指定しブラウザを起動
path = os.getcwd() # c:\users\user\desktop\test
firefox_driver_path = str(path) + "\driver\geckodriver.exe"
print(firefox_driver_path)
driver = webdriver.Firefox(executable_path=firefox_driver_path, options=options)
driver.set_window_size(1300, 750)
# URLを開きスクショとる
driver.get("https://www.mozilla.org/ja/")
driver.save_screenshot("mozilla.png")
Firefoxの場合、Firefox本体のexeのパスを指定しないとエラーになる👊🏻
解決方法は以下を参考
IE
今回のプロジェクトでは対象外なので除外
Mac Safari
今回のプロジェクトでは対象だけどMacなので別途機会があれば追記します。