Chrome for Testingの使い方 ブラウザとChromeDriverでテスト自動化

Python

今回は、Chrome for Testingの使い方について解説します。

Chrome for Testingとは

Chrome for Testingとは、2023年6月12日に発表された、テストや自動化用に提供されたバイナリです。「バイナリ」というのは実行ファイル(.exe)のことです。

わたしたちが普段何気なく使っているGoogle Chromeも、バイナリを起動することで動きます。

Chrome for Testingの特徴

自動更新されない

Chrome for Testingでは、自動更新が無効化されています。そのため、ブラウザのバージョンが上がったタイミングでChromeDriverが動かない、ということもありません。

複数のバージョンを切り替えてテストしたり、「バージョンxxでエラーが出た!」という場合の検証もしやすくなります。

過去のバージョンの実行が容易

Google Chromeのバージョンを一度上げてしまうと、ダウングレードするにはいったんアンインストールしてから対象のバージョンをインストールする必要があります。

Chrome for Testingでは、コマンドでバージョンを指定してダウンロードできるため、わざわざサイト上から目的のバージョンを探す手間を省けます。

node.jsのインストール

テスト用のバイナリを入手するには、npmが必要です(参考)。npmというのは、Node.jsというサーバーサイドでJavaScriptを実行する環境のパッケージを管理するシステムです。

バイナリを使うにあたり、必要なものをよしなにダウンロードしてくれるツールと考えておけば良いかと思います。

Node.jsのダウンロードページ(https://nodejs.org/ja/download) を開き、ご自身の環境にあわせてインストーラをダウンロードします。今回はWindowsをダウンロードします。

ダウンロードしたインストーラを実行します。基本的にデフォルトのまま「Next」で進んでいけばOKです。

最後のほうで「Automattically install the necessary tools~」というチェックボックスが出てきますが、これはネイティブモジュールの開発に必要なものをインストールする?と聞いており、今回は必要ないのでチェックはせず次に進みます。

「Completed the Node.js Setup Wizard」と表示されたらFinishを押します。

コマンドが正しく実行できるか確認

以下のコマンドを実行します。

※インストールする前からコマンドプロンプトを開いていた場合は、開き直して実行してください。

node -v
npm -v

バージョンが表示されればOKです。

パスが通っていない場合

コマンドを実行してバージョンが表示されなかった場合は、以下コマンドを実行してnodejsのパスが設定されているか確認します。

set path

設定されているパスが全て出力されるので、ここになければ手動でパスを通す必要があります。

パスを設定する

  1. Windowsアイコンを押下し、右下にある設定(歯車アイコン)を押下
  2. 左側メニューから「システム」を押下し、一番下の「バージョン情報」を選択
  3. デバイスの仕様のちょい下にある関連リンクから「システムの詳細設定」を選択

以下のような画面が出てきますので、「環境変数」を押します。

上段、下段どちらにも環境変数と出ていますが、現在ログインしているユーザーのみパスを通したい場合は上段、すべてのユーザーに適用させたい場合は下段を設定します。

nvmのインストール

nvmをインストールします。

https://github.com/coreybutler/nvm-windows/releases を開きます。

nvm-setup.exe をダウンロードします。

nvm-setup.exe を実行します。途中、以下のようなダイアログが出ますが「はい」を押します。

インストールできたか確認

nvm -v

バージョンが表示されればOKです。

Chrome for Testingバイナリのダウンロード

https://googlechromelabs.github.io/chrome-for-testing/ を開きます。

ダウンロードしたいバージョンのStatusがチェックマークになっていることを確認します。

npxコマンドでダウンロード

管理者権限でコマンドプロンプトを開き、npxコマンドを実行します。

npx @puppeteer/browsers install chrome@116.0.5793.0

ドキュメントによると「Stable」「Beta」などの名称を指定してもOKのようです。

npx @puppeteer/browsers install chrome@stable

no such fileエラーが出た場合

上記手順で実行したら、ディレクトリがないと怒られたので、ログに出ていた場所に「npm」というフォルダを作成しました。

これって本来はインストールした時点で作られるんですかね・・・?とりあえず空のファイル作って動くようにしました!(もっと良い方法があればご教示ください・・・)

正しくインストールされたか確認

インストール後、インストールされたexeのパスが表示されます。

chrome@115.0.5790.102 C:\WINDOWS\system32\chrome\win64-115.0.5790.102\chrome-win64\chrome.exe

該当のディレクトリを見てみると、chrome.exeがありました。

開くとGoogle Chromeが表示されます。

指定したバージョンのGoogle Chromeが正しくダウンロードされていることを確認できました。

Webdriverを使用してブラウザを起動する

先ほど同様、https://googlechromelabs.github.io/chrome-for-testing/ を開き、対象のバージョンのchromedriverが使える状態であることを確認します。

管理者権限でコマンドプロンプトを開き、インストールコマンドを実行します。

npx @puppeteer/browsers install chromedriver@115.0.5790.102

以下フォルダ内に、chromedriver.exeがダウンロードされました。

chrome@115.0.5790.102 C:\WINDOWS\system32\chromedriver\win64-115.0.5790.102\chrome-win64\chromedriver.exe

seleniumのコード

ダウンロードしたchromedriverを使用してブラウザを起動してみます。以下は、Yahoo!JAPANを開いて閉じるだけのコードです。

from selenium import webdriver
import time

chrome_options = Options()

# Chromeのパス
chrome_options.binary_location = r'C:\WINDOWS\system32\chrome\win64-115.0.5790.102\chrome-win64\chrome.exe'

# ChromeDriverのパス
driver_path = r'C:\WINDOWS\system32\chromedriver\win64-115.0.5790.102\chromedriver-win64\chromedriver.exe'

# ブラウザを起動
driver = webdriver.Chrome(executable_path = driver_path, options=chrome_options)
# Yahoo!JAPANを開く
driver.get('https://www.yahoo.co.jp/')

# ページが開くまで3秒待機
time.sleep(3)

# ブラウザを閉じる
driver.close()

指定したバージョンでChromeが起動しました。

注意点

ChromeとChromeDriverのバージョンは揃えること

Google Chrome(ブラウザ)とChromeDriverのバージョンが異なっていると、以下のようなエラーが発生します。

selenium.common.exceptions.WebDriverException: Message: unknown error: no chrome binary at C:\WINDOWS\system32\chrome\win64-115.0.5790.102\chrome-win64\chrome.exe

内容的には「ChromeDriverがないよ!」というエラーですが、バージョン違いのときに起こりました。分かりづら・・・。

意図したバージョンで動いているか確認すること

すでにChromeDriverのパスが通っている場合、新しくダウンロードしたChromeDriverが起動できていない可能性があります。

意図したバージョンで動かせているか、確認が必要です。Chromedriverの実体がどこにあるのか確認する方法については、以下記事にて解説しています。

まとめ

今回は、Chrome for Testingについて、使い方やバイナリのダウンロード手順を解説しました。

Node.jsの設定とか、最初は少し面倒なところがありますが、いったんコマンドが使える環境を作れればあとは手軽にバイナリをダウンロードできて便利だなと思いました。

ブラウザのバージョンが上がったタイミングでwebdriverが動かなくなる事象も避けることができるので、テスト実施時には役に立ちそうです。

ChromeDriverとChromeのバージョンを一致させる手順については、以下記事にて解説しています。

chaso

文系出身、数字が苦手な平凡主婦。塾講師、大手企業SE、不動産事務、Webライター、結婚後はパートタイムでエンジニアをしています。機械音痴だけど効率化や自動化をこよなく愛しています!お仕事の依頼・ご相談は問い合わせよりお願いいたします♪

chasoをフォローする

コメント

タイトルとURLをコピーしました