2020.04.03
2021.08.12
Fabeee社員ブログ
こんにちは!派手髪エンジニアのバターです。
弊社では最近勤怠システムが新しく導入され、リモートワーク時はその日の終わりに作業日報を提出することが義務付けられました(社内作業者のみ)。
コロナウィルス流行中でリモートワークメインのため、毎日のように提出しないといけないわけです。
どうせ同じような申請内容なのに毎回アクセスしてポチポチするのはめんどくさい。
ここでめんどくさがりな僕は、この1~2分程度の単純作業をプログラムでどうにか自動化できるんじゃないかと考えました。
そして、自動化で最初に思い浮かんだのが「Selenium」です。
Seleniumとは簡単にいうと、Webアプリケーションをテストするためのものです。
人間がWebサイトを操作するかのごとく、テキスト入力したりボタンクリックしたりすることができちゃうんですねえ!!
なんとこのSelenium…弊社の推奨言語Pythonでも使えるのです!
早速取り掛かってイク。
目次
事前準備
Pythonの環境構築まで含めてしまうと長くなってしまうので省かせていただきます。
Pythonのバージョンは3.8.0です。
▶︎ pipでseleniumをインストール
pip install selenium
▶︎ 今回ブラウザはGoogle Chromeを使用するのでchromeをpipインストール
pip install chromedriver-binary
▶︎ pipインストールしたものをインポート
import chromedriver_binary # これインポートしておくと、chromeのドライバの環境パスを通す必要がなくなる。便利。
from selenium import webdriver
①勤怠システムログイン
▶︎ chromeで勤怠システムのログインページを開く
self.driver = webdriver.Chrome()
self.driver.get('https://a-rakumo.appspot.com/login')
▶︎ ログイン実行
どうやら、nameが”domain”という要素を取得すればテキストを入力できそうです。
find_element_by_nameで要素を取得
send_keysでテキスト入力
submit()でフォームを送信(テキスト入力後エンターキーを押すイメージ)
search_box = self.driver.find_element_by_name("domain")
search_box.send_keys('【ここに会社指定のドメイン】')
search_box.submit()
②グーグルアカウントでログイン
メールアドレスはnameが”identifier”、パスワードはnameが”password”の要素を取得して同様にすればテキスト入力できます。
このページはsubmit()が使えなかったので、「次へ」ボタンをそれぞれ取得してプログラムでクリックして画面遷移させます。
# メールアドレス入力
input_id = self.driver.find_element_by_name('identifier')
input_id.send_keys('【Googleアカウントのメールアドレス】')
# 次へボタンクリック
id_submit = self.driver.find_element_by_id('identifierNext')
id_submit.click()
# パスワード入力
input_password = self.driver.find_element_by_name('password')
input_password.send_keys('【Googleアカウントのパスワード】')
# 次へボタンクリック
password_submit = self.driver.find_element_by_id('passwordNext')
password_submit.click()
前編はここまで
ここまでで、とりあえずログインして勤怠システムのトップページ(ダッシュボード)に遷移することができました。
後編ではいよいよSeleniumでリモートワーク作業日報の申請を行います。
後編はこちら
SES/受託開発のご依頼についてはこちら