#自己紹介
当方、プログラミングはほぼ初心者です。
おかしなところなどありましたら、お教えいただけますとありがたいです。
#きっかけ
うちの子供が通っている小児科は、webの予約システムを導入しています。
ただ、こちらの小児科は予約が超激戦で…。
毎回手で操作して予約を取っては、予約番号に一喜一憂するのに限界を感じたため
自動化することにしました。
ドクターキューブという予約システムの、(ほぼ)自動化プログラムです。
メールアドレスの認証が済んでいる前提です。
最後の画面は自動化していません。
今後は、予約開始時間になったら自動的に動くようにしたいと思っていますが
そこまで至っていません。
#環境
Windows10
Ruby 2.5.5
Selenium-webdriver 3.142.6
Firefox 70.0.1
#準備
###gemをインストール
gem install selenium-webdriver
#実行
ID/PASSを同じプログラムで保存しているのは危ないと思いつつ
家庭内で回すだけのものなので、簡便に作りました。
driver = Selenium::WebDriver.for :firefox #firefox起動
driver.manage.timeouts.implicit_wait = 60 # driver全体に、wait処理をする(最大60秒)
#URL/ID/PASS
url = 'https://ssc●.doctorqube.com/●●●/'
id = '●●●'
pass = '●●●'
#サイトにアクセス
driver.navigate.to(url)
#「予約をとる」をクリック
driver.find_element(:xpath, '//*[@id="yoyakuset"]').click
#当院での受診ははじめてですか?「いいえ」をクリック
driver.find_element(:xpath, '//*[@id="yoyaku"]/div/div[2]/div[2]').click
#ID/PASSを入力
driver.find_element(:xpath, '//*[@id="c_code"]').send_key(id)
driver.find_element(:xpath, '//*[@id="c_pass"]').send_key(pass)
driver.find_element(:xpath, '//*[@id="yoyaku"]/div/div[2]/form/input[5]').click
#Emailアドレスを確認(アドレス欄がブランクになる場合は、send_keyでアドレスを送る)
driver.find_element(:xpath, '//*[@id="yoyaku"]/div/div[3]/form/input[5]').click
#当日の診療予約
driver.find_element(:xpath, '//*[@id="yoyaku"]/div/div[2]/ul/div[1]').click
#予約(ここは手で操作。2つめのリンクなら末尾がdiv[2]、3つめならdiv[3])
#driver.find_element(:xpath, '//*[@id="yoyaku"]/div/div[2]/ul/div[1]').click
#ブラウザを終了する(↑を自動化するまでは使わない)
#driver.quit
##参考にした記事
・Seleniumコマンドチートシート【Ruby】
https://qiita.com/wMETAw/items/8ea0ff9c7a63ca6134b9
・RubyでSeleniumを使ってスクレイピング
https://qiita.com/tomerun/items/9cb81d7a98150ff22f53