Django Girls and Boys 備忘録

Python、Selenium、Django、java、iPhoneアプリ、Excelマクロなどで気付いたこと、覚えておきたいことなどを載せていきます。

【Python スクレイピング】Seleniumで send_keysを使用してデータ入力する方法



 

はじめに

 

Seleniumを使用すると、ブラウザの自動操作が可能になります。本記事では、`send_keys` メソッドを使ってWebフォームにデータを入力する方法を解説します。

 

 

目次

 

 

1.事前準備

 


まずは、必要なライブラリをインストールしておきましょう。

コマンドプロンプトやターミナルで以下を入力します。

 

pip install selenium

 

 

また、WebDriver(例: ChromeDriver)に関しては、Seleniumが4.6以降であれば自動でインストール、アップデートしてくれますが、それ以前の場合は用意する必要があります。

その場合は、以下の自動アップデート方法などで自動処理させて利用します。

 

 

kuku81kuku81.hatenablog.com

 

 

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キーを押す動作も再現できます。フォーム入力の自動化やデータ登録の自動化に役立つので、ぜひ試してみてください!