PythonでChrome for Testingバイナリを用いたブラウザ自動化

スポンサーリンク

PythonでChrome for Testingバイナリを用いたブラウザ自動化について解説します。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows11)

■Node.jsをインストールしnpm(npx)を使用できるようにする

まずはnpm(npx)が使用できるようにするためにNode.jsをインストールします。

こちら(https://github.com/coreybutler/nvm-windows/releases/)から「nvm-setup.exe」のダウンロードします。ダウンロード後、exe形式のファイルをダブルクリックします。クリックするとインストールが開始され終了します。

nvm version

終了後にPowerShell、コマンドプロンプトなどを管理者として実行し、上記のコマンドを入力し、Enterキーを押します。すると、バージョンが表示されます。これでnvmはインストール完了となります。

nvm install 16.18.0

その後、PowerShell、コマンドプロンプトを開いたままで上記のコマンドを入力し、Enterキーを押します。押すとNode.jsのインストールが開始されます。今回はバージョン16.18.0をインストールしています。

nvm use 16.18.0

しばらくするとインストールが完了します。完了後、上記のコマンドを入力しEnterキーを押して有効にします。

node --version
npm --version

その後、上記のコマンドを入力しEnterキーを押します。押すとバージョンが表示されます。これでNode.jsのバージョンとnpmの確認が完了となります。

■Chrome for Testingのバージョン等を確認

完了後、Chrome for Testing(https://googlechromelabs.github.io/chrome-for-testing/)にアクセスします。

アクセス後、今回は「Beta(公開時点では「Version: 115.0.5790.24 (r1148114)」となる)」のchrome(win32)とchromedriver(win32)をインストールします。

確認後、PowerShell、コマンドプロンプトなどを管理者として実行します。

npx @puppeteer/browsers install chrome@115.0.5790.24
npx @puppeteer/browsers install chromedriver@115.0.5790.24

実行後、特定のChrome for Testingのバージョン、また特定のChromeDriverのバージョンをダウンロードするために上記のコマンドを入力し、Enterキーを押します。

chrome@115.0.5790.24 C:\Windows\System32\chrome\win64-115.0.5790.24\chrome-win64\chrome.exe
chromedriver@115.0.5790.24 C:\Windows\System32\chromedriver\win64-115.0.5790.24\chromedriver-win64\chromedriver.exe

Enterキーを押すとインストールが開始され、上記のメッセージが表示されます。メッセージ内にはchrome.exeとchromedriver-win64\chromedriver.exeが表示されますので、この情報をコピーしておきます。

■seleniumを用いたブラウザ自動化

コピー後、Pythonのライブラリであるseleniumをインストールします。インストール後、seleniumを用いたブラウザ自動化のためのスクリプトを書いていきます。

■コード

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options

# 今回インストールしたchrome_driverのパス
chrome_driver_path = r'C:\Windows\System32\chromedriver\win64-115.0.5790.24\chromedriver.exe'

options = Options()
# 必要なオプションを追加します
# options.add_argument("--headless") # ヘッドレスモードオプションの例

service = Service(chrome_driver_path)
driver = webdriver.Chrome(service=service, options=options)

driver.get('https://www.google.com')

# 検索を実行する
search_box = driver.find_element(By.NAME, 'q')
search_box.send_keys('こんにちは')
search_box.send_keys(Keys.RETURN)

# 検索結果を出力する
search_results = driver.find_elements(By.TAG_NAME, "div")
for result in search_results:
    print(result.text)

# Quit the browser
driver.quit()

今回はGoogle検索で検索ボックスに「こんにちは」と自動で入力し、入力後に表示される検索結果のデータを取得し出力させる処理となります。

■検証・実行

今回書いたスクリプトを「w_g.py」という名前でPythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。

DevTools listening on ws://127.0.0.1:54106/devtools/browser/4630c8a2-1d13-4f4e-9d5c-54b1f33ba8c2

実行してみると、Webブラウザで起動。Webブラウザには「Chromeは自動テストソフトウェアによって制御されています」と表示しており、自動で検索ボックスに指定したキーワードが入力。入力後、検索結果のデータを取得し取得されたデータを出力させることができました。

■備考

今回、Chrome for Testingのバージョン「115.0.5790.24」をインストールしたが、インストール先のフォルダ(C:\Windows\System32\chrome)内を検証のため、全て別の場所に移動させる。

その後、chrome_driverでスクリプトを実行させてみたが、検索結果のデータを取得し出力させることができた。このことからChrome for Testingなしでも使えるようだ。

コメント

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