Amazonで商品を見るセール会場へ

Selenium 4の導入とログイン操作|架空フォームで入力・待機・終了を試す

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本体による操作の確認とは区別しています。

架空のローカル練習フォームでWelcome demoを表示した結果
所有練習フォームをブラウザーで操作した結果(2026/10/03撮影)。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.sleepWebDriverWaitと条件表示・クリック可能・結果文字を待つ
コード末尾に閉じ処理がないfinallyのdriver.quit()通常・例外の両方で終了を試みる

古いPython 3.7やChromeDriver 76の番号をそのまま導入する必要はありません。

公式の移行資料と待機の説明を確認します。

失敗の切り分けと練習の終了

ページが開かない場合はローカルサーバーの起動とポートを確認します。

入力欄が見つからない場合はIDと対象フレームを確認し、リストの2番目といった位置だけで欄を選ばないようにします。

実サービスには二要素認証・CAPTCHA・許可された連携方式など固有の条件があります。

架空フォームの成功を、Xのログインや業務サイトの操作成功と読み替えないでください。

終了時はフォームの入力を空にし、サーバーを起動したターミナルでCtrl+Cを押します。

今回の確認ではフォームの結果表示とEnter操作、模擬ドライバーの待機・終了処理までを確認し、実Seleniumの起動は未確認です。

カードをCSVへ保存する場合はブログカード抽出の記事へ進んでください。

最終確認:2026年10月3日。

関連する情報取得・自動化の記事

関連記事のサービス操作は、各記事で示す確認範囲と現行の仕様を確認してください。

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

仕事効率化のおすすめ書籍

仕事用PCの選び方

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次