Selenium 4で入力欄を探し、文字を入力して結果を待つ基本操作を、架空のローカルフォームで説明します。
実サービスのアカウントや勤怠操作は、この練習の対象に含めません。
環境とローカル練習ページ
練習ZIPを専用フォルダーに展開し、サポートされているPython 3.10以上とChromeを用意します。
PowerShellで「py -m venv .venv」と「.venv/Scripts/python.exe -m pip install selenium beautifulsoup4」を実行します。
同じフォルダーで「.venv/Scripts/python.exe -m http.server 8767 –bind 127.0.0.1」を実行します。
フォルダーには練習用ファイルだけを置き、別のターミナルからhttp://127.0.0.1:8767/login-practice.htmlを開きます。
| 項目 | 入力・表示 | 意味 |
|---|---|---|
| 練習ユーザー | demo@example.invalid | 実アカウントではない |
| 練習パスワード | practice-only | 実サービスでは使わない |
| 一致した入力 | Welcome, demo | フォーム上の結果表示 |
| 違う入力 | Input mismatch | 結果表示で切り分け |
このフォームはJavaScriptで文字列を比較するだけで、認証・入力の送信・保存を行いません。
ブラウザーで正しい入力と誤った入力の表示を確認しましたが、Selenium本体による操作の確認とは区別しています。

現行APIで入力・結果待機・終了を行うコード
次をarticle-5788.pyとして保存し、練習サーバーを起動したまま「.venv/Scripts/python.exe article-5788.py」を実行します。
関数を先に定義し、ファイル末尾で呼び出す構成です。
import argparse
from urllib.parse import urlparse
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
def practice_login(url):
parsed = urlparse(url)
if parsed.scheme != "http" or parsed.hostname not in ("127.0.0.1", "localhost"):
raise ValueError("This demo accepts local practice pages only.")
driver = webdriver.Chrome()
try:
driver.set_page_load_timeout(30)
driver.get(url)
wait = WebDriverWait(driver, 10)
user = wait.until(EC.visibility_of_element_located((By.ID, "demo-user")))
password = driver.find_element(By.ID, "demo-password")
user.send_keys("demo@example.invalid")
password.send_keys("practice-only")
wait.until(EC.element_to_be_clickable((By.ID, "demo-submit"))).click()
wait.until(EC.text_to_be_present_in_element((By.ID, "result"), "Welcome, demo"))
print(driver.find_element(By.ID, "result").text)
finally:
driver.quit()
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--url", default="http://127.0.0.1:8767/login-practice.html")
practice_login(parser.parse_args().url)
旧コードから変更する箇所
| 旧記述 | 現行の書き方 | 確認すること |
|---|---|---|
| webdriver.Chrome(パス) | まずwebdriver.Chrome()で起動 | 手動指定が必要ならServiceをキーワード引数で渡す |
| find_element_by_idなど | find_element(By.ID, 値) | 複数ならfind_elementsを使う |
| 固定のtime.sleep | WebDriverWaitと条件 | 表示・クリック可能・結果文字を待つ |
| コード末尾に閉じ処理がない | finallyのdriver.quit() | 通常・例外の両方で終了を試みる |
古いPython 3.7やChromeDriver 76の番号をそのまま導入する必要はありません。
失敗の切り分けと練習の終了
ページが開かない場合はローカルサーバーの起動とポートを確認します。
入力欄が見つからない場合はIDと対象フレームを確認し、リストの2番目といった位置だけで欄を選ばないようにします。
実サービスには二要素認証・CAPTCHA・許可された連携方式など固有の条件があります。
架空フォームの成功を、Xのログインや業務サイトの操作成功と読み替えないでください。
終了時はフォームの入力を空にし、サーバーを起動したターミナルでCtrl+Cを押します。
今回の確認ではフォームの結果表示とEnter操作、模擬ドライバーの待機・終了処理までを確認し、実Seleniumの起動は未確認です。
カードをCSVへ保存する場合はブログカード抽出の記事へ進んでください。
最終確認:2026年10月3日。
関連する情報取得・自動化の記事
関連記事のサービス操作は、各記事で示す確認範囲と現行の仕様を確認してください。



