icon
icon

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

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

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

監修してくれたメンター

nakamoto

アジマッチ有限会社代表取締役社長。書籍化歓迎。対応業務:PHP(Laravel)、機械学習、Vue.js、LAMP・AWS、越境EC、CTO、エンジニア採用、CTO、経営者の不安解決コンサルティング。

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

Pythonのseleniumモジュールでwait()を利用することで、自動化処理を一定時間停止した後、処理を再開できます。

実務でも、Pythonのseleniumモジュールでwait()を利用することで、対象Webページの表示状態に即した処理を行うので、ぜひ学習してみてください。

目次

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

 

田島悠介

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

大石ゆかり

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

田島悠介

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

大石ゆかり

お願いします!

 

seleniumモジュールとは?

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

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

ブラウザ操作からテストスクリプトを作成でき、Webベース管理タスクの自動化も行えます。

Webブラウザの自動操作ライブラリとしてさまざまな機能を備えています。

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

PythonでSeleniumを利用してWebサイトのログインを自動化する記事も合わせてご覧ください。

 

wait()の使い方

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

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

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

 

時間指定待機の使い方

サンプルコード

driver.implicitly_wait(20)

解説

driver.implicitly_wait(20)では、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

 

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

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

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

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

今回のコードはそのまま動作させると、違法スクレイピングにつながる可能性があるため、そのままでは動作しないように一部のコードを意図的に削除しています。

サンプルコード

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

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

# テックアカデミーマガジンのサイトを開く
driver.get("該当URL")

# 検索ワードを入力する場所が表示されるまで最大30秒待機する
#
# 検索ワードを入力する場所を探して「python」と入力する
#
# 検索を実行する(検索ボタンを押すのと同じ動作)
search_box.submit() 

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

解説

import timeでは、timeモジュールをインポートしています。

from selenium import webdriverでは、seleniumモジュールのwebdriverライブラリをインポートしています。

driver = webdriver.Chrome()では、Chromeブラウザを起動しています。

driver.get(“https://techacademy.jp/magazine/”)では、テックアカデミーマガジンのサイトを開いています。

search_box.submit()では、検索を実行しています。

driver.implicitly_wait(10)では、検索結果が表示されるのを10秒待ちます。

driver.find_element_by_link_text(“Python”).click()では、検索結果からタイトルが「Python」のリンクをクリックしています。

time.sleep(5)では、5秒待ちます。

driver.quit()では、ブラウザを閉じています。

 

大石ゆかり

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

田島悠介

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

大石ゆかり

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

 

Pythonを学習中の方へ

これで解説は終了です、お疲れさまでした。

  • つまずかず「効率的に」学びたい
  • 副業や転職後の「現場で使える」知識やスキルを身につけたい

プログラミングを学習していて、このように思ったことはありませんか?

テックアカデミーのPythonコースでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。

合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、人工知能(AI)や機械学習の基礎を学べます。

まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。

時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!