今回は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開発のテストがある程度は簡略化できるかと思います
会社紹介
私が所属しているアドバンスド・ソリューション株式会社(以下、ADS)は一緒に働く仲間を募集しています
会社概要
「技術」×「知恵」=顧客課題の解決・新しい価値の創造
この方程式の実現はADSが大切にしている考えで、技術を磨き続けるgeekさと、顧客を思うloveがあってこそ実現できる世界観だと思っています
この『love & geek』の精神さえあれば、得意不得意はno problem!
技術はピカイチだけど顧客折衝はちょっと苦手。OKです。技術はまだ未熟だけど顧客と知恵を出し合って要件定義するのは大好き。OKです
凸凹な社員の集まり、色んなカラーや柄の個性が集まっているからこそ、常に新しいソリューションが生まれています
ミッション
私たちは、テクノロジーを活用し、業務や事業の生産性向上と企業進化を支援します
-
アドバンスド・ソリューション株式会社
アドバンスド・ソリューションは主にMicrosoft製品を使用して、企業の生産性向上に取り組んでいます。要件定義から導入 ...
サイトへ移動
-
お問い合わせ | アドバンスド・ソリューション株式会社
お問い合わせはこちら