はじめに
PhantomJSを使用してこの自動化を少し改善したお話を投稿しました(Qiita記事)
背景
ログインが必要な某社内システムでは、定期的なパスワード変更が強制されています。
そして、新パスワードは旧パスワードとは異なっていなければなりません。
私は意識が低く、面倒が嫌いなので、パスワードの定期変更は面倒くさく感じてしまいます。
(パスワードの定期変更の有効性は諸説ありますがそれはまた別のお話)
なんとかこの定期的に必要になる作業を自動化できないかと考えました。
前提
- Windowsマシンであること
- Rubyがインストール済みであること
- firefoxがインストール済みであること
- firefoxのプラグイン「Selenium IDE」がインストール済みであること
- Rubyのgem「selenium-webdriver」がインストール済みであること
結果
Seleniumを使用して、以下を自動化しました。
- Seleniumを使用して、某社内システムにログイン
- パスワード変更画面に移動してパスワードを変更
- ログアウト
- 再度某社内システムへログイン
- パスワード変更画面に遷移してパスワードを元のパスワードに変更
- ログアウト
- 終了
上記処理をRubyで作成し、タスクスケジューラにて定期的に実行しています。
やったこと
- firefoxのプラグイン「Selenium IDE」を使用して某社内システムでのパスワード変更作業をテストケースとして自動記録
- 記録されたテストケースをRuby形式でエクスポート
- 自動記憶されたものだけで動作するか確認(動作せず)
自動記録は全ての操作を記録してくれるわけではないので、一部の操作は手動で追記が必要です
今回はフレーム間移動を手動で追記しました。
フレーム移動はswitch_to.frame("FRAME_NAME")
で可能です。 - 処理を追記したrbファイルが正常に動作するか確認(動作確認OK)
- 正常動作を確認したrbファイルをタスクスケジューラに登録
本来ならパスワード変更期限以内に一度だけ実行すればいいのですが、タスクじスケジューラの機能ではうまく組めなかったので、1ヶ月に一度、平日のお昼休憩中に実行するように登録しました。
昼休憩時に作業している可能性も考え、無操作の時間が5分以上の場合のみ実行するという設定も追加しました(未検証)
成果と課題など
成果
-
(多分)楽になった
パスワードの強制変更の期限が割りと長いのでまだ実感はありませんが多分楽になると思います。 -
Seleniumの勉強になった
今回の自動化を通して、フレーム間の移動方法を知りました。
そのうち業務でも使えればと思っています。
課題
-
無操作時間とはいえ、ブラウザが直接起動する
Seleniumを使用する以上仕方ないこととは思いますが、ブラウザが起動するのはちょっとイケてないと感じます。某社内システムにAPI等が備わっていれば別の手段もあるかもしれませんがAPIは多分無いです(未調査) -
定期実行が妥協の産物
これも仕方ないかなと思っています。高機能なスケジューリングツールをこのためだけに(ローカルPCに)導入するのはマシンスペック的にも無いというのが今の判断です。
注意
この自動化は、正直褒められたものではないです。むしろ非推奨だと思います。
大企業で同じことをやると情シス部門から怒られるかもしれません。
また、これは単なる予想ですが、仮にこのような自動化を勤怠システム等で実施した場合は、懲罰レベルの怒られ方をするかもしれません。ご注意ください。