はじめに
現在在籍している会社の勤怠システムがめんどくさい。勤怠管理アプリにログインして、「出勤ボタン」や「退勤ボタン」を押さなくてはいけないので、PC 起動時や終了時に自動でボタンを押してもらえるように selenium を使ってプログラムを書いてみた。実行環境は以下。(普段は WSL2 を用いているが、Windows 環境の方が PC 起動や終了きっかけで動かすには都合がよさそうだったので Windows ローカルで実行した。)
- Windows 10 Pro
- Google Chrome = 91.0.4472.124
- chromedriver = 91.0.4472.101
- Python = 3.9.6
- selenium = 3.141.0
大まかな流れは以下の通り。
- Google Chrome のバージョン確認および chromedriver のインストール
- Python および Selenium のインストール
- ウェブサイトへのアクセスするための Python スクリプト作成
- Python スクリプトを実行する bat ファイルの作成
- PC 起動時・終了時に bat を実行するための設定
1. Google Chrome のバージョン確認および chromedriver のインストール
Selenium を用いて Google Chrome を扱うには chromedriver が必要となる。使用している Chrome のバージョンと合わせる必要があるため、以下手順で確認する。
次に Chrome のバージョンに合わせて、chromedriver を ChromeDriver - Downloads からダウンロードする。今回の場合、メジャーバージョンが 91 なので、ChromeDriver 91.0.4472.101 を選択し、chromedriver_win32.zip をダウンロードし解凍する。(ダウンロードしたドライバへのパスが後で必要となるので、適宜ファイルを移動させておく。自分の場合は C:/Users/[user_name]/chromedriver_win32/chromedriver.exe
に置いた)
2. Python および Selenium のインストール
Microsoft Store にて Python をインストールする。(ターミナルを開いて、python
と打ってまだインストールされていなければ自動で Microsoft Store に遷移するはず。)ここでは Python 3.9 をインストールした。ターミナルで pip install selenium
を実行して、selenium もインストールする。
3. ウェブサイトへのアクセスするための Python スクリプト作成
以下の shukkin.py でサイトへのアクセスおよび出勤ボタンの打刻ができる。ログインに使用するアカウントやパスワードは config.txt に書いておく。(どちらのファイルも C:/Users/[username]/Program/
直下に置いた。)
### ライブラリのインポート(selenium 以外は標準ライブラリ)
import sys
import time
import configparser
from selenium import webdriver
### プログラムの実行許可(必要ならコメントアウト)
# print('勤怠管理アプリを開いて打刻します。よろしければ yes と入力してください')
# ans = input()
# if ans != 'yes':
# print('終了します')
# sys.exit()
### Chrome ドライバのパス、接続先 URL を設定
chrome_path = 'C:/Users/[username]/chromedriver_win32/chromedriver.exe'
url = 'https://**********'
### アカウント名、パスワードを読み取り
config = configparser.ConfigParser()
config.read('C:/Users/[username]/Program/config.txt', encoding='utf-8')
account = config['kintai']['account']
password = config['kintai']['password']
### Chrome のオプションを設定する
options = webdriver.ChromeOptions()
# options.add_argument('--incognito') # プライバシーモード
# options.add_argument('--headless') # ヘッドレスモード
driver = webdriver.Chrome(executable_path=chrome_path, options=options)
### 指定サイトに接続する
driver.get(url)
### アカウント、パスワードの入力
driver.find_element_by_id('username').send_keys(account)
driver.find_element_by_id('password').send_keys(password)
driver.find_element_by_id('login').click()
time.sleep(10)
### 出勤ボタン
driver.find_element_by_id('Shukkin').click()
time.sleep(5)
### 退勤ボタン
# driver.find_element_by_id('Taikin').click()
# time.sleep(5)
### ブラウザを終了する
driver.quit()
[kintai]
account = myaccount
password = mypassword
アカウントやパスワードの入力フォームは、実際の画面にて右クリック→「検証」から id を調べて driver.find_element_by_id('username')
のようにしてアクセスできる。id がない場合はその他キーで代用する。
4. Python スクリプトを実行する bat ファイルの作成
Python スクリプトを実行する bat ファイルは以下のようになる。
# `python shukkin.py` をそれぞれ絶対パスで書いているだけ
C:/Users/[username]/AppData/Local/Microsoft/WindowsApps/PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0/python.exe C:/Users/[username]/Program/shukkin.py
python.exe までのパスは以下で確認できる。
$ python
>> import sys
>> sys.executable
5. PC 起動時・終了時に bat を実行するための設定
起動時の自動実行はスタートアップへの登録でできる。[Windows]+[R] を押して、shell:startup
と入力すると、スタートアップでのエクスプローラが開かれる。あとは実行したいファイル(今回の場合は shukkin.bat)のショートカットを置けばよい。
終了時の自動実行はローカルグループポリシーへの登録でできる。 Windows10で終了時に特定のスクリプトを実行させる方法(ローカルグループポリシー/gpedit.msc) を参考にした。
[Windows]+[R] を押して、gpedit.msc
と入力すると、ローカルグループポリシーエディタが開かれる。左のツリーメニューから「コンピューターの構成」→「Windows の設定」→「スクリプト(スタートアップ/シャットダウン)」→「シャットダウン」を選択。
シャットダウンのプロパティ画面にて、「追加」→「参照」で実行したいスクリプト(shukkin.bat)を選択し「OK」で設定できる。
おわりに
もっともっと自動化を進めたい。楽をしたい。。。