nerodia(2)
前回の続き。
題材として社内用日報サイトを用いています。
(本物からは一部改変しています)
設定したユーザーの当日分の日報が作成済みかを調べる、というものです。
from nerodia.browser import Browser
import datetime
import toml
# 設定ファイルを読み込みます
# TOML
# https://github.com/toml-lang/toml
# TOML pythonライブラリ
# https://github.com/uiri/toml
toml_data = toml.load('settings.toml')
# ブラウザ定義
browser = Browser(browser=toml_data['browser'])
# トップページに移動
# ログイン画面になる想定
browser.goto(toml_data['system']['index_page'])
# ログイン情報をセット
mail_input = browser.text_field(id='email')
mail_input.value = toml_data['user']['mail']
passwd_input = browser.text_field(id='password')
passwd_input.value = toml_data['user']['passwd']
# ログインボタン押下
# 有効になるのを待ってからクリックとしているが、あまり意味はないかも
btn = browser.button(id='xxxlogin')
btn.wait_until(timeout=20, interval=0.5, method=lambda e: e.enabled)
btn.click()
# 個人の日報リストページへ移動
user_url = '{}{}'.format(toml_data['system']['user_page'], toml_data['user']['id'])
browser.goto(user_url)
# 当日の日報検索用文字列
today = datetime.date.today()
datestr='{:02d}月{:02d}日 の日報'.format(today.month, today.day)
# 一番上が最新のはずですが、念のため表示してるもの全部ループ
found = False
divs = browser.divs('class', 'hogehoge')
for d in divs:
if datestr in d.text:
found = True
break
# 今の所は結果出力のみ
if found:
print('今日の日報記載済み')
else:
print(datestr + 'は未記載です!')
# 閉じておきます
browser.close()
設定ファイルにはTOMLを用いています。
作成のイメージだけ記載しておきます。
browser='chrome'
[user]
id=9999
mail='user@example.net'
passwd='password'
[system]
index_page='https://example.net/'
user_page='https://example.net/xxx.php?uid='
余談ですが、VisualStudioCodeで作成/デバッグ(今回はただ実行するだけですが)しました。
Written with StackEdit.
コメント
コメントを投稿