PHPプログラマー必見!pythonのブラウザ操作でテストを楽にする。
まえがき
PHPプログラマーのみなさん、こんにちは。
突然ですがPythonは好きですか?
正直、私の印象はWeb系の開発にPythonは不要だと思っていました。
実際、2025年現在で、Webページ作るなら、ほぼPHPかJavaの2択です。
ひと昔前ならRubyも選択肢でしたが採用率は減っているようです。
じゃあ、Pythonはというと、AIや数学系、データ操作系、自動化系で1強になりつつありますね。
今回はその自動化の力を借りてテストを行います。
つまりWebページそのものはPHPやJava、RubyだとしてもテストにはPythonを活用するタッグが非常に強力なので、PHPユーザも覚えるべきだと思い知った次第です。
Chromeを動かす準備をする。
Seleniumをインストールする
Seleniumがブラウザを操作するPythonのライブラリです。
コマンドラインで以下のように打てばインストールできます。
なお、PHPと違ってワークスペース内のvendorなどに入るのではなく、実行環境に追加されていきます。
pip install selenium
python.exe -m pip install --upgrade pip
クロームドライバをインストール
Chromeを操作するにはPythonのライブラリとは別にドライバが必要です。
Chromeのバージョンと合わせないとだめなので、まずChromeのバージョンを確認します。
URLに以下を打つと表示されます。
chrome://settings/help
そして、今インストールできるドライバーのバージョンを確認します。
pip index versions chromedriver-binary
ずらっと表示されるので、その中で自分のChromeの番号で一番近いものを選びます。
pip install chromedriver-binary==134.0.6998.178.0
Installing collected packages: pip
Attempting uninstall: pip
Found existing installation: pip 24.3.1
Uninstalling pip-24.3.1:
Successfully uninstalled pip-24.3.1
Successfully installed pip-25.0.1
Pythonのコードを書く
# 時間を計るライブラリをインポート
import time
# WebDriverライブラリをインポート
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
# ChromeのWebDriverライブラリをインポート
import chromedriver_binary
# Chromeを起動する。
driver = webdriver.Chrome()
# URLを開く。
url = "https://127.0.0.1/admin"
driver.get(url)
# 画面が表示されるまで何秒か待つ。
time.sleep(3)
# find_elementでHTML要素を取得してsend_keysで値を入力する。
elem_user = driver.find_element(By.NAME,"email")
elem_user.send_keys("admin@test.com")
elem_pass = driver.find_element(By.NAME,"password")
elem_pass.send_keys("pa$$w0rd")
# click()でボタンを押せる。
elem_button = driver.find_element(By.ID,"login_button")
elem_button.click()
#Enterキーを押すと閉じる
input("Enterキーを押すとブラウザが閉じます...")
driver.quit()
実行する
あとはこれを実行するだけです。
python main.py
おわりに
出来ましたか?
普通ならGUIの入力欄をアプリケーションの外側から操作するのは極めて難しいのですが、pythonを使えば簡単にできましたね。
一部javascriptフレームワークによっては要素の取得が困難だったりするのですが、それは機会があれば別記事で書きます。
株式会社ONE WEDGE
【Serverlessで世の中をもっと楽しく】 ONE WEDGEはServerlessシステム開発を中核技術としてWeb系システム開発、AWS/GCPを利用した業務システム・サービス開発、PWAを用いたモバイル開発、Alexaスキル開発など、元気と技術力を武器にお客様に真摯に向き合う価値創造企業です。
Discussion