今回はPythonでやりたかったことの肝となるブラウザの操作についてです。【Selenium】というライブラリを使用しています。【Selenium】というライブラリはバージョンによっては仕様が大きく変わっていることがあるらしいので注意が必要です
バージョン | |
OS | Windows 11 Pro |
Python | 3.12 |
Selenium | 4.19.0 |
ブラウザを起動し対象サイトへ
起動するブラウザはインストールされているものによって変える必要があります
get関数の引数にブラウザで開きたいURLを渡すと対象ブラウザでそのURLを開くことができます
import selenium
from selenium.webdriver.common.by import By
from selenium import webdriver
# Edgeを起動
browser = webdriver.Edge()
# Firefoxを起動
browser = webdriver.Firefox()
# Chromeを起動
browser = webdriver.Chrome()
# Googleにアクセス
browser.get('https://www.google.com')
対象URLの要素を取得
開いたURL上からqという名前の要素(今回の場合は検索窓)を取得し、そこにPythonという文字を入力し検索するという流れになっています
search = browser.find_element(By.NAME, 'q')
search.send_keys('Python')
search.submit()
特定の要素が表示されるまで待機
ウェブによっては表示されるまでに時間を要することがあります。そのため、表示されるまで待機するといった処理が必要となります。そこで、今回は対象要素がクリックできるまで後続の処理を待機させてみます
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(browser, 10)
selector = '対象要素'
# 対象要素がクリックできる状態になるまで待機
target = wait. until(EC.element_to_be_clickable((By.CSS_SELECTOR, selector)))
クリックできるまで待機以外にもあるので以下のサイトが参考になります
-
-
【Python】Seleniumでの待機処理(暗黙的な待機、明示的な待機) | OFFICE54
本記事ではPythonのSeleniumを使ったブラウザ自動操作での、待機処理の方法について解説していきます。待機処理は ...
続きを読む
タブの移動
例えばログインボタンをクリックした際に新たなタブに切り替わることがあると思います。その際にプログラムの方でも操作タブを切り替える必要があります
# 現在のウィンドウハンドルを取得し、操作先を変更
browser.switch_to.window(browser.window_handles[-1])
以下のサイトが参考になりました
-
-
[Python]Seleniumで操作するウィンドウを切り替える2つの方法を紹介 | たぬハック
こんにちは、ハッカー見習いのたぬ(@tanuhack)です! Seleniumを使っていて、ボタンやテキストリンクを押し ...
続きを読む
最後に
上記のプログラムを使用すればWeb開発のテストがある程度は簡略化できるかと思います