ドコモのデータ通信量をメールで送信
WebDriverを使ってドコモのDメニューにログインし、当月の通信量を毎日メールで送信するアプリを作成した。
処理の流れは以下の通り。
- ログイン画面を表示する。
- IDとパスワードを入力しログイン
- 画面に表示された通信量を取得
- 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
さくらインターネットにGitをインストール
最新バージョンを確認する
http://git-scm.com/downloads
2012/8/4時点では1.7.11.4が最新だった。
ターミナルでログインし、ソースからダウンロードしてインストール。
mkdir -p local/gitinstall cd $_ wget http://git-core.googlecode.com/files/git-1.7.11.4.tar.gz tar xvzf git-1.7.11.4.tar.gz cd git-1.7.11.4 ./configure -prefix=$HOME/local gmake && gmake install
$HOME/localにパスを通す。
パスが通っているかを確認する。
git --version
リポジトリを作成
mkdir -p $HOME/git/hoge.git cd $_ git --bare init --share
PHP Unitのテストクラス作成
インストール方法は昨日の日記を参照
http://d.hatena.ne.jp/nkimra/20120715/1342312360
<?php class Hoge { public function getMoge() { return 1; } } ?>
スケルトンクラスを作成するためにPHPUnit_SkeletonGeneratorをインストールする
cd /Applications/MAMP/bin/php/php5.3.6/binsudo ./pear install phpunit/PHPUnit_SkeletonGenerator
スケルトンクラスを作成する
Hoge.phpと同じディレクトリで下記コマンドを実行するとHogeTest.phpができる
/Applications/MAMP/bin/php/php5.3.6/bin/phpunit --skeleton-test Hoge
HogeTest.phpのtestGetMogeメソッドを次のように書き換える
public function testGetMoge() { $this->assertEquals(1, $this->object->getMoge()); }
ターミナルでHogeTest.phpと同じディレクトリで下記コマンドを実行。
/Applications/MAMP/bin/php/php5.3.6/bin/phpunit HogeTest
テストにパスした場合は次のように表示される
PHPUnit 3.6.11 by Sebastian Bergmann. . Time: 1 second, Memory: 5.00Mb OK (1 test, 1 assertion)
MAMPにPHPUnitをインストールする
MAMPのバージョン2.0.3
cd /Applications/MAMP/bin/php/php5.3.6/bin sudo ./pear upgrade pear ./pear channel-discover pear.phpunit.de ./pear channel-discover components.ez.no ./pear channel-discover pear.symfony-project.com sudo ./pear install phpunit/PHPUnit
下記エラーが出る場合は/Applications/MAMP/bin/php/php5.3.6/conf/pear.confを削除する
Notice: unserialize(): Error at offset 276 of 1133 bytes in Config.php on line 1050 ERROR: The default config file is not a valid config file or is corrupted.
正常にインストールができれば/Applications/MAMP/bin/php/php5.3.6/binにphpunitができる
動作確認
/Applications/MAMP/bin/php/php5.3.6/bin/phpunit --version