LoginSignup
3
3

More than 1 year has passed since last update.

PythonでのSeleniumを使ったWEBサイト操作

Last updated at Posted at 2022-08-09

個人的備忘録です。
自社の申請システムで入力がいつも同じなので使ってみました。

準備

Webドライバーのダウンロード

自動操作したいWebブラウザのWebドライバを用意する。
ChromeならChromeの。EdgeならEdgeのWEBドライバーが必要。

重要

  1. ブラウザのバージョンに対応したバージョンのドライバーが必要
  2. EdgeのWebドライバーは32bitを使った方がよい。(64bitは不具合多めという話を聞いたことがある。)
Webドライバーのバージョンアップ自動化について

実装

基本的な流れ

  1. URLアクセス
  2. 操作したい要素を探索・選択
  3. 操作(入力やデータの収集など)

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()
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3