Selenium の基本的な使い方を整理する

IT

はじめに

Selenium は Web ブラウザの操作を自動化するためのフレームワークです。
本記事では Selenium の基本的な使い方を整理します。

環境

以下が今回の環境です。

$ python -V
Python 3.9.2

$ pip list | grep -e selenium -e webdriver-manager
selenium           4.1.5
webdriver-manager  3.5.4

基本的な使い方

ライブラリのインストール

$ pip install selenium
$ pip install webdriver-manager

ブラウザを起動

ブラウザを起動するコードです。
webdriver_manager を利用し、使用している Google Chrome のバージョンに適したドライバーを実行時にダウンロードしています。
これにより、Google Chrome のバージョン更新ごとに、都度ドライバを更新する必要がなくなります。

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get('https://google.com/')

要素を取得

要素の取得には driver.find_element メソッドを使用します。

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.get('https://www.yahoo.co.jp/')
print(driver.find_element(By.CLASS_NAME, '_2n9xMCYzZ6JYW3o0ool3t-').text)
# ウェブ

複数の要素を取得する場合は driver.find_elements メソッドを使用します。

driver.find_elements(By.CLASS_NAME, 'クラス名')

要素の操作

取得した要素をクリックする場合は、click メソッドを使用します。

element.click()

フォームにテキストを入力して、送信する場合は send_keys メソッドを使用します。

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))

driver.get('http://www.google.com')

    # Enter "webdriver" text and perform "ENTER" keyboard action
driver.find_element(By.NAME, 'q').send_keys('webdriver' + Keys.ENTER)

待ち時間の設定

指定した要素が見つからない場合の待機時間の設定には driver.implicitly_wait メソッドを使用します。

driver.implicitly_wait(10)

タブの切り替え

操作するタブを切り替えるときは driver.switch_to.window メソッドを使用します。

driver.switch_to.window(driver.window_handles[1])

iFrame

Selenium はトップレベル要素のみを認識するため、iframe タグ内の要素を取得するにはフレームを切り替える必要があります。
フレームの切り替えには、driver.switch_to.frame メソッドを使用します。

    # Store iframe web element
iframe = driver.find_element(By.CSS_SELECTOR, '#modal > iframe')

    # switch to selected iframe
driver.switch_to.frame(iframe)

おわりに

本記事では Selenium の基本的な使い方を整理します。この記事がどなたかの参考になれば幸いです。

参考

コメント