個人的備忘録です。
自社の申請システムで入力がいつも同じなので使ってみました。
準備
Webドライバーのダウンロード
自動操作したいWebブラウザのWebドライバを用意する。
ChromeならChromeの。EdgeならEdgeのWEBドライバーが必要。
重要
- ブラウザのバージョンに対応したバージョンのドライバーが必要
- EdgeのWebドライバーは32bitを使った方がよい。(64bitは不具合多めという話を聞いたことがある。)
Webドライバーのバージョンアップ自動化について
実装
基本的な流れ
- URLアクセス
- 操作したい要素を探索・選択
- 操作(入力やデータの収集など)
URLアクセス
ブラウザによりimportモジュールが違うため注意(以下はEdge)
# import
from selenium import webdriver
from selenium.webdriver.edge import service as fs # edgeウェブドライバ
# Edgeドライバの作成
service = fs.Service(executable_path="msedgedriver.exe")
browser = webdriver.Edge(service=service)
# URLアクセス
browser.get("http://XXXXXXXXXXXXX")
操作したい要素を探索・選択
基本的に「.find_element」or「.find_elements」を使用
# 例)最初に一致するimgタグの要素を検索
target_element = browser.find_element(By.TAG_NAME,"img")
# 例)imgタグに一致するすべての要素を検索(リストで取得)
target_elements = browser.find_elements(By.TAG_NAME,"img")
iframeが埋め込まれている場合
iframe内の要素を取得する場合、find_elementしても取得できない。
switch_to.frameでフレームを切り替えてあげる。
browser.switch_to.frame("main")
操作してる最中に新規ウィンドウが表示され、その新規ウィンドウを操作したいとき。
browser.switch_to.window(browser.window_handles[-1])
操作(入力やデータの収集など)
# クリック
target_element.click()
# テキストボックスクリア
target_element.clear()
# テキストボックス入力
target_element.send_keys("テキストボックスに入力したい文字")
# 要素の文字列を取得
target_element.get_attribute("value")
終了処理
# 現在のウィンドウを閉じる
browser.close()
# Webドライバインスタンスを終了する。
browser.quit()