LoginSignup
4
6

More than 3 years have passed since last update.

Ruby Seleniumで病院の予約を自動化(の一歩手前まで)

Last updated at Posted at 2019-11-12

自己紹介

当方、プログラミングはほぼ初心者です。
おかしなところなどありましたら、お教えいただけますとありがたいです。

きっかけ

うちの子供が通っている小児科は、webの予約システムを導入しています。
ただ、こちらの小児科は予約が超激戦で…。
毎回手で操作して予約を取っては、予約番号に一喜一憂するのに限界を感じたため
自動化することにしました。
ドクターキューブという予約システムの、(ほぼ)自動化プログラムです。

メールアドレスの認証が済んでいる前提です。
最後の画面は自動化していません。
今後は、予約開始時間になったら自動的に動くようにしたいと思っていますが
そこまで至っていません。

環境

Windows10
Ruby 2.5.5
Selenium-webdriver 3.142.6
Firefox 70.0.1

準備

gemをインストール

gem install selenium-webdriver

実行

ID/PASSを同じプログラムで保存しているのは危ないと思いつつ
家庭内で回すだけのものなので、簡便に作りました。

yoyaku.rb
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

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6