はじめに
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 の基本的な使い方を整理します。この記事がどなたかの参考になれば幸いです。
コメント