
Seleniumを使用すると、ブラウザの自動操作が可能になります。本記事では、`send_keys` メソッドを使ってWebフォームにデータを入力する方法を解説します。
目次
1.事前準備
まずは、必要なライブラリをインストールしておきましょう。
コマンドプロンプトやターミナルで以下を入力します。
pip install selenium
また、WebDriver(例: ChromeDriver)に関しては、Seleniumが4.6以降であれば自動でインストール、アップデートしてくれますが、それ以前の場合は用意する必要があります。
その場合は、以下の自動アップデート方法などで自動処理させて利用します。
2.send_keysを使ったデータ入力
send_keysを使ったデータ入力をする場合は、
element = driver.find_elements(By.NAME, "name属性値")
などで取得した要素に対して、
element.send_keys("入力データ")
のような形式で指定します。
element.send_keys("入力データ")
以下の例では、Googleの検索ボックスに「Selenium Python」と入力し、検索を実行します。
サンプルコード
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
# WebDriverのパスを指定してブラウザを起動
driver = webdriver.Chrome()
# Googleのページを開く
driver.get("https://www.google.com")
# 検索ボックスを特定し、「Selenium Python」を入力
search_box = driver.find_element(By.NAME, "q")
search_box.send_keys("Selenium Python")
# Enterキーを押して検索実行
search_box.send_keys(Keys.RETURN)
# ブラウザを閉じる
driver.close()
driver.quit()
3.send_keysの活用例
3.1.フォーム入力
ログインフォームにIDとパスワードを入力する場合、以下のように記述します。
サンプルコード
from selenium import webdriver
from selenium.webdriver.common.by import By
# WebDriverのパスを指定してブラウザを起動
driver = webdriver.Chrome()
# ログイン画面表示
driver.get("https://example.com/login")
# ユーザー名を入力
username = driver.find_element(By.ID, "username")
username.send_keys("your_username")
# パスワードを入力
password = driver.find_element(By.ID, "password")
password.send_keys("your_password")
# ログインボタンをクリック
login_button = driver.find_element(By.ID, "login-button")
login_button.click()
上記の例は、
ログイン画面のURL:https://example.com/login
ユーザー名入力要素のID:username
ユーザー名:your_username
パスワード入力要素のID:password
パスワード:your_password
ログインボタン要素のID:login-button
とした時の例になります。
4. 注意点
4.1.要素が見つからない場合
find_elementが 「NoSuchElementException」を発生させることがあります。
この場合、原因の1つとして、ページを読み込む前に要素取得などの次の処理を行おうとしてしまったという場合があります。
このような場合には、ページの読み込みを待つために 「WebDriverWait」を使用するとよいでしょう。
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
search_box = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.NAME, "q")))
search_box.send_keys("Selenium Python")
4.2.Enterキーの代替方法
上記例では、「Keys.RETURN」を使用しましたが、それ以外では、「Keys.ENTER」を使うこともできます。
また、「submit() メソッド」を使用する方法もあります。
この場合は、
search_box.send_keys(Keys.RETURN)
の代わりに、
search_box.submit()
を使用します。
5.まとめ
Seleniumの「send_keys」を使用すると、簡単にWebフォームへデータを入力できます。
「Keys」を活用すると、Enterキーを押す動作も再現できます。フォーム入力の自動化やデータ登録の自動化に役立つので、ぜひ試してみてください!