大学の履修登録の抽選科目で誰かが外した時に、先着でその授業を取るためにひたすらポチポチする作業を自動化するツールを作りました。
大学ごとに履修登録の仕方は異なると思うので、大枠だけ記しておきます。
使用したのはRuby、SeleniumWebDriver、ブラウザはGoogleChromeです。
##Seleniumとは
Webブラウザ上でWebアプリケーションを自動で操作(テスト)するツール。
##Selenium WebDriverとは
旧来のSelenium RCの問題点を解決し、ブラウザを操作する仕組み。
Selenium RCをSelenium1、Selenium WebDriverをSelenium2とも呼ぶ。
##環境
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.14.6
BuildVersion: 18G103
$ ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin18]
##Selenium WebDriverのインストール
$ gem install selenium-webdriver
ターミナルでSelenium WebDriverのgemを追加。
$ gem list
でselenium-webdriverと表示されればOK!
##ChromeDriverのインストール
今回はブラウザでGoogleChromeを使用するので、下記リンクからChromeDriverをインストールします。
##サンプルコード
エディタでコードを書いていきます。大学によってページ遷移など異なると思うので、簡潔に。
今回はRubyを使用するため、selenium_test.rbなどと名付けておきます。
require 'selenium-webdriver'
driver = Selenium::WebDriver.for :chrome
driver.manage.timeouts.implicit_wait = 60
# 指定したドライバの要素が見つかるまでの待ち時間を指定
driver.navigate.to "URL"
# URLを指定してアクセス
driver.find_element(:xpath, '該当のxpathを記載').click
# xpathでボタンを指定して押す
driver.find_element(:name '指定したいname属性').send_keys('入力したいワード')
# name属性の入力フォームを指定して文字を入力する。
# 後はif文やloop文などを使用して、各々の大学の履修登録に合わせて作成してください
driver.quit
# ドライバを閉じる
以下コマンドで実行。
$ ruby selenium_test.rb
おかしな点があればご指摘お願いします!!
##参考
Seleniumチートシート