概要
毎朝パソコン起動してChrome開いて打刻するのがめんどくさかったので自動化しました。
用意したもの
・Windows 8.1
・Google Chrome
・Python 3
・selenium
・ChromeWebDriver
バージョン覚えてなくてすみませんが、どれも2019年6月時点での最新版だったはずです。
WebDriverの準備
こちらから自分のChromeのバージョンに対応したWindows版のChromeDriverをダウンロードします。
例えば、Chromeのバージョンが78なら、ChromeDriverを78のものを。
他のOSの方は他のOS版をダウンロードしてください。
ダウンロードしたChromeDriverは適当なところにおきます。
(プロジェクトフォルダ内、C直下など)
実装
Pythonで以下のような形で実装します。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import datetime
import time
import sys
# 要素(定数)
ELEMENT_CLASS = "btnSTART"
# webdriver読み込み
driver = webdriver.Chrome(executable_path="おいた場所/chromedriver.exe")
# Chrome起動して指定URLに飛ぶ
driver.get("https://www.clockin.hoge.jp")
# 表示されるまで待つ
try:
element = WebDriverWait(driver, 5).until(
EC.presence_of_element_located((By.CLASS_NAME, ELEMENT_CLASS))
)
finally:
if not driver.find_element_by_class_name(ELEMENT_CLASS).is_enabled():
driver.quit()
# 打刻
driver.find_element_by_class_name(ELEMENT_CLASS).click()
プロキシで自動化できない場合
プロキシがあって毎回ログインしないと接続できない場合、Chromeを起動した時点で止まるかと思います。
SwitchyOmegaという拡張機能を使用して自動化することができます。
詳しい使い方は書きませんが、SwitchyOmegaを起動した状態でアクセスし、プロキシ設定を追加すると、userフォルダが作られます。これをWebDriverを読み込む際にオプションとして記述します。
実装
# webdriver読み込み(chrome_options=optionが追加部分です)
driver = webdriver.Chrome(executable_path="./chromedriver.exe", chrome_options=option)
# ちょっと止める
time.sleep(1)
# Chrome起動して指定URLに飛ぶ
driver.get("https://www.clockin.hoge.jp")
プロキシ認証処理のためか、たまに指定したURLに飛ばず、画面が真っ白になることがあります。そのため、1秒程度sleepで止めると問題なくURLに飛びます。
参考
・https://qiita.com/memakura/items/20a02161fa7e18d8a693
ページ内要素の操作に参考にさせていただきました。