🙆‍♀️

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スキル開発など、元気と技術力を武器にお客様に真摯に向き合う価値創造企業です。
https://onewedge.co.jp

Discussion