- Seleniumを用いたWebページのログイン処理の自動化方法についてメモする。
- 個人用メモ※何件も類似事例あり。
事前準備
- chromedriver取得
- コードと同一階層に
chromedriver
を配置する。chromedriver
の取得方法はこちらを参照のこと。
- コードと同一階層に
構成
root_dir --- login.py
|_ chromedriver.exe
|_ conf/setting.conf
コード
-
conf/setting.conf
- 設定ファイル。接続先のページ情報(URL,画面要素)とログイン情報を記述する。
[PAGE_INFO] URL= TARGET_URL ELEM_ID_FORM_USERNAME=USERNAME_ID ELEM_ID_FORM_PASSWORD=PASSWORD_ID ELEM_ID_BTN_LOGIN=LOGIN_BTN_ID [USER_INFO] USERNAME = USERNAME PASSWORD = PASSWORD
-
login.py
- 上記設定ファイルの接続情報・ログイン情報をもとに、ログイン処理を行う。
- 抽象的に記述しているため、対象のページの各画面要素を確認すること。
from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import time import configparser # 設定ファイル読み込み conf = configparser.ConfigParser() conf.read('conf/setting.conf') # ページ情報 TARGET_URL = conf['PAGE_INFO']['URL'] TARGET_ELEM_ID_USERNAME = conf['PAGE_INFO']['ELEM_ID_FORM_USERNAME'] TARGET_ELEM_ID_PASSWORD = conf['PAGE_INFO']['ELEM_ID_FORM_PASSWORD'] TARGET_ELEM_ID_LOGIN_BTN = conf['PAGE_INFO']['ELEM_ID_BTN_LOGIN'] # ログイン情報 USERNAME = conf['USER_INFO']['USERNAME'] PASSWORD = conf['USER_INFO']['PASSWORD'] with webdriver.Chrome("./chromedriver.exe") as driver: # ページ上のすべての要素が読み込まれるまで待機 wait = WebDriverWait(driver, 15) driver.implicitly_wait(10) driver.get(TARGET_URL) wait.until(EC.presence_of_all_elements_located) # USERNAME 要素を指定 -> 入力 elem_username = driver.find_element_by_id(TARGET_ELEM_ID_USERNAME) elem_username.send_keys(USERNAME) # PASSWORD 要素を指定 -> 入力 elem_password = driver.find_element_by_id(TARGET_ELEM_ID_PASSWORD) elem_password.send_keys(PASSWORD) time.sleep(3) # ログインボタン要素を指定 -> クリック elem_login_btn = driver.find_element_by_id(TARGET_ELEM_ID_LOGIN_BTN) elem_login_btn.click() driver.quit()
- 上記設定ファイルの接続情報・ログイン情報をもとに、ログイン処理を行う。
動作確認
python login.py