Pythonにおけるseleniumモジュールでのwait()の利用方法を現役エンジニアが解説【初心者向け】

初心者向けにPythonにおけるseleniumモジュールでのwait()の利用方法について現役エンジニアが解説しています。Selenium(セレニウム)とは、Webアプリケーションのテスト自動化を実現するブラウザ駆動型テストツール群です。waitは時間指定やコンテンツを基準にした待機の処理が出来ます。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

Pythonにおけるseleniumモジュールでのwait()の利用方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して、初心者向けに解説します。

Pythonについてそもそもよく分からないという方は、Pythonとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプ、Python講座の内容をもとに紹介しています。

 

田島悠介

今回は、Pythonに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

Pythonにおけるseleniumモジュールでのwait()の利用方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

seleniumモジュールとは?

Selenium(セレニウム)とは、Webアプリケーションのテスト自動化を実現するブラウザ駆動型テストツール群です。

ブラウザ操作からテストスクリプトを作成でき、Webベース管理タスクの自動化も行えます。Webブラウザの自動操作ライブラリとしてさまざまな機能を備えています。

ブラウザ上でのキーボード入力やクリック等の操作のほとんどが自動化できる為、筆者も業務自動化ツールの開発で重宝しています。

今回はそんなseleniumモジュールの待機処理について学習していきます。

参考記事

Selenium WebDriverでPythonのテストを行う方法【初心者向け】の記事も合わせてご覧ください。”

wait()の使い方

seleniumの待機処理には大きく分けて2つの方法があります。

  • 時間指定の待機
  • Webページ上のコンテンツを基準にした待機例

それではそれぞれの使い方について学習していきます。

[PR] Pythonで挫折しない学習方法を動画で公開中

時間指定待機の使い方

サンプルコード

driver.implicitly_wait(20)

 

解説

このコードでは時間指定待機の設定をおこなっております。

一度設定することでfind_element 等の処理時に要素が見つかるまで指定時間繰り返し探索するようになります。数字を書き換える事で待機する時間の設定が可能です。

Webページ上のコンテンツを基準にした待機の使い方

サンプルコード

WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.ID, "ID名"))

 

解説

Explicit Waitsは複雑な条件を指定して、条件が満たされるまで待機するという設定ができます。サンプルコードではIDが”ID名”の要素が読み込まれるまで最大30秒待機という処理になります。

また、By.はID以外も下記の要素が指定できます。状況に応じて適切な要素を設定しましょう。

[By.で指定できる要素一覧]
ID
XPATH
LINK_TEXT
PARTIAL_LINK_TEXT
NAME
TAG_NAME
CLASS_NAME
CSS_SELECTOR

wait()を利用して待機処理を記述してみよう

ここではサンプルコードを例に待機処理を実行します。

selenium環境が用意できていない方は、Selenium WebDriverでPythonのテストを行う方法【初心者向け】の記事も合わせてご覧ください。”

サンプルコード

# 必要なライブラリのインポート
import time
from selenium import webdriver

# Chromeブラウザを起動する
driver = webdriver.Chrome()

# Googleのサイトを開く
driver.get("https://www.google.co.jp/")

# 検索ワードを入力する場所が表示されるまで最大30秒待機する
WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.NAME, "q"))
# 検索ワードを入力する場所を探して「Selenium」と入力する
search_box = driver.find_element_by_name('q') search_box.send_keys('Selenium')

# 検索を実行する(検索ボタンを押すのと同じ動作)
search_box.submit() 

# 検索結果からタイトルが「Selenium - Web Browser Automation」のリンクをクリックする。 
driver.implicitly_wait(10)
driver.find_element_by_link_text("Selenium - Web Browser Automation").click()
# 5秒待つ 
time.sleep(5)
# Chromeブラウザを閉じる 
driver.quit()

 

解説

9行目ではWebページ上のコンテンツを基準にした待機を使用しています。ここでのWebページ上でのコンテンツとは検索ワード入力部分になり要素は”NAME”、要素名は”q”になります。

15行目では時間指定待機を使用しており16行目でのfind_element処理時に要素が見つかるまで10秒間繰り返し探索します。

実行すると、Chromeブラウザが起動し、自動的に操作されていることを確認できます。

 

監修してくれたメンター

菅繕久(すがよしひこ)

現在はフリーランスのエンジニアをしていてプログラミング歴は8年目になります。

普段は Python、FileMaker等を使って様々な業務で活用できるIoTプロダクトRPAツールを作成しています。
開発実績としては、業務自動化ツール(在庫管理・発注・ファイル操作 etc)、電子カルテシステム、ロボット用プログラムなどがあります。
TechAcademyではPythonコースを担当しております。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でも最短4週間で、Pythonを使った人工知能(AI)や機械学習の基礎を習得できる、オンラインブートキャンプを開催しています。

また、現役エンジニアから学べる無料体験も実施しているので、ぜひ参加してみてください。