ドコモのデータ通信量をメールで送信

WebDriverを使ってドコモのDメニューにログインし、当月の通信量を毎日メールで送信するアプリを作成した。
処理の流れは以下の通り。

  1. ログイン画面を表示する。
  2. IDとパスワードを入力しログイン
  3. 画面に表示された通信量を取得
  4. Gmailでメールで送信

実行環境
CentOS7
Ruby2.0

まずCentOSでWebDriverが動作する環境を作成する。

# Rubyのインストール
sudo yum install ruby ruby-devel libxml2-devel libxslt-devel

#使用するGemのインストール
sudo gem update --system
gem install selenium-webdriver
gem install ruby-gmail
gem install json_pure

#XvfbとFirefoxのインストール
sudo yum -y install firefox ipa-{,p}gothic-fonts ipa-{,p}mincho-fonts
sudo yum -y install xorg-x11-server-Xvfb

Rubyで書いたプログラムは次の通り

require "selenium-webdriver"
require "gmail"

url   = "https://payment2.smt.docomo.ne.jp/smph/charges/gkyap003.srv?Xitraffic=1"
id    = "電話番号"
pass  = "パスワード"
gid   = "GmailのID"
gpass = "Gmailのパスワード"

driver = Selenium::WebDriver.for :firefox
driver.navigate.to url

#Dメニューログイン
driver.find_element(:name, "authid").send_key id
driver.find_element(:name, "authpass").send_key pass
driver.find_element(:name, "subForm").submit

#念のため3秒待つ
sleep 3

#通信量テキスト取得
tag = driver.find_elements(:tag_name, "p")
mes = tag[2].text + " " + tag[3].text

driver.quit

#メール送信
gmail = Gmail.new(gid, gpass)
message =
  gmail.generate_message do
    to "送信先アドレス"
    subject "Docomo通信量" + Date.today.strftime("%Y/%m/%d")
    text_part do
      body mes
    end
  end

gmail.deliver(message)
gmail.logout

ターミナルで実際の動作確認。
CUIで確認するためにXvfbを起動する。

Xvfb :99 -screen 0 1024x768x24 -extension RANDR &
export DISPLAY=:99

Rubyの実行、うまくいけばメールが送信される。

ruby traffic.rb