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なしでも使えるようだ。
コメント