ChromeでWeb打刻自動化


概要

毎朝パソコン起動して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で以下のような形で実装します。

clockin.py
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を読み込む際にオプションとして記述します。

実装

clockinproxy.py

# 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
 ページ内要素の操作に参考にさせていただきました。