【Python】Seleniumで画面要素を操作する:クリックと文字入力

目次

概要

Seleniumを使って取得したWeb要素(ボタンや入力フォーム)に対して、クリックや文字入力といったユーザー操作を実行する方法を解説します。

「検索ボックスにキーワードを入れて検索ボタンを押す」といった、ブラウザ自動化の核心となるアクションです。

仕様(入出力)

  • 入力:
    • 操作対象の WebElement オブジェクト
    • 入力する文字列(send_keys の場合)
  • 出力:
    • ブラウザ画面上でのクリック動作、文字入力動作
  • 前提:
    • find_element 等で事前に要素を取得できていること。

基本の使い方

入力欄に文字を打ち込み、その後にボタンをクリックする基本的な流れです。

# input_element, button_element は取得済みと仮定

# 1. 文字列を入力する
input_element.send_keys("Python Selenium")

# 2. 要素をクリックする
button_element.click()

コード全文

入力フォームとボタンを持つ簡易的なWebページを生成し、実際に「文字入力」と「クリック」を行う完全な動作サンプルです。

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

def operate_elements_demo():
    """
    入力欄への文字入力と、ボタンのクリック操作を行うデモ関数。
    """
    driver = webdriver.Chrome()

    # テスト用のHTMLフォームを作成(入力欄とボタン)
    # <input id="my-input" type="text">
    # <button id="my-button" onclick="alert('Clicked!')">Click Me</button>
    html_content = """
    data:text/html;charset=utf-8,
    <input id='my-input' type='text' placeholder='Enter text here'>
    <button id='my-button' onclick='document.body.style.backgroundColor="yellow"'>Click Change Color</button>
    """

    try:
        # 1. ページを開く
        driver.get(html_content)
        
        # 2. 入力欄(inputタグ)を取得して操作
        input_box = driver.find_element(By.ID, "my-input")
        
        print("文字を入力します...")
        input_box.send_keys("検索ワード")
        time.sleep(2) # 動作確認用

        # 3. ボタン(buttonタグ)を取得して操作
        btn = driver.find_element(By.ID, "my-button")
        
        print("ボタンをクリックします...")
        btn.click()
        
        # クリックの結果を確認(背景色が黄色に変わります)
        time.sleep(2)
        print("操作完了")

    except Exception as e:
        print(f"エラーが発生しました: {e}")

    finally:
        driver.quit()

if __name__ == "__main__":
    operate_elements_demo()

カスタムポイント

操作メソッド一覧

WebElementオブジェクトに対して実行できる主要な操作メソッドです。

メソッド処理内容使用例
element.click()要素をクリックするリンク、ボタン、チェックボックスの選択など
element.send_keys("文字列")文字列を入力する検索ボックス、ログインフォームへの入力
element.clear()入力内容を消去する既に入力されている値をリセットする場合に使用
element.submit()フォームを送信するエンターキーを押す動作に近い(フォーム内要素のみ有効)

特殊キーの入力

send_keys は通常の文字だけでなく、EnterキーやTabキーなどの特殊キーも送信できます。

利用するには from selenium.webdriver.common.keys import Keys をインポートします。

from selenium.webdriver.common.keys import Keys

# "Python" と入力した後に Enterキー を押す
element.send_keys("Python")
element.send_keys(Keys.ENTER)

注意点

  1. 要素が操作可能か(Interactable)
    • 要素が見えていても、他の要素(広告やポップアップなど)に重なられている状態で click() すると、エラー(ElementClickInterceptedException)が発生します。
    • その場合、重なっている要素を閉じるか、JavaScriptを使って強制的にクリックさせる回避策が必要です。
  2. 入力前のクリア
    • 既存のテキストが入っている入力欄に send_keys すると、文字列が追記されます。
    • 確実に入力値を置き換えたい場合は、先に element.clear() を実行してください。
  3. 画面外の要素
    • 基本的にSeleniumは自動でスクロールして要素を表示してから操作しますが、うまくいかない場合は driver.execute_script("arguments[0].scrollIntoView();", element) などで明示的にスクロールさせる必要があります。

応用

検索サイトのトップページで、キーワード入力から検索実行までを一気に行う実用的なパターンです。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time

def google_search_demo():
    driver = webdriver.Chrome()
    driver.get("https://www.google.com")
    
    try:
        # 検索ボックスを見つける(name="q" はGoogleの仕様)
        search_box = driver.find_element(By.NAME, "q")
        
        # キーワードを入力して、そのままEnterキーを押す
        # ボタンをクリックするよりも確実で高速です
        print("検索実行中...")
        search_box.send_keys("Python Selenium Tutorial")
        search_box.send_keys(Keys.ENTER)
        
        time.sleep(3) # 検索結果を見るために待機
        print(f"検索結果ページ: {driver.title}")

    finally:
        driver.quit()

if __name__ == "__main__":
    google_search_demo()

まとめ

画面操作の基本は「見つけて(find_element)」から「入力(send_keys)」または「クリック(click)」です。

特にフォーム入力では、既存の値を消す clear() や、決定操作を行う Keys.ENTER を組み合わせることで、人間らしい操作を正確に再現できます。

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

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次