Firefox に Selenium IDE 拡張を導入して,領収書や明細書のダウンロード作業を省力化する。
クレジットカード会社や電話会社,銀行などでは,領収書や明細書の郵送をやめてオンラインでダウンロードさせるところが増えてきた。紙がなくなった分,エコロジカルではあるが,手間がかかるのが難点である。さらに,期限付きでどんどん消えてしまうというのも悩みのタネである。定期的にアクセスしてダウンロードしなければならない。しかもサイトによって明細書が何種類にも分かれていたり,アクセスページが複数あったり,ブラウザの「戻る」ボタンを押すと「セッションの期限切れ」とか出てログインからやり直しさせるなど,手に負えない。
そこで,Firefox の Selenium IDE アドオンを使って,ダウンロードを半自動化することにした。かなり上手くいくが,失敗することもある。回線速度やパソコンの処理能力も影響するので,完全自動化とはならない。しかし,一度設定ファイルを作っておけば,途中で失敗しても手順が記述してあるので,単純なキー操作だけでダウンロードを完了させることができる。
心理的なイライラはかなり軽減できる。
動作環境は MacBook Pro, Mac OS X 10.11.4 El Capitan, Firefox 47.0, Selenium IDE 2.9.1 である。
Selenium は,Web アプリケーションのテストを自動化するためのツールである。マルチプラットフォームで,Windows, Mac, Linux で動作する。もともとは Firefox の拡張機能だけだったが,Chrome や IE などのブラウザでも動作するエンジンが開発され,多くのプログラミング言語のためのインターフェース Selenium WebDriver も用意された (イマドキのIDE事情 (157) SeleniumでWebアプリケーションのテストを自動化しよう | マイナビニュース)。この記事では,Firefox で動作する GUI ツールの Selenium IDE を使う。
最終的な目標としては,Linux サーバに Selenium WebDriver を入れておいて,cron で1か月に1度起動して明細書ダウンロードを完全自動化することであるが,かなり高いハードルとなりそうなので,ここでは GUI でお茶を濁すことにする。
Firefox の Selenium IDE アドオンは Selenium IDE :: Add-ons for Firefox からダウンロードできる。
困ったときは,Selenium な人たちが集まる 日本Seleniumユーザーコミュニティ というのもあるようなので,聞いてみるのもありかも。
1つのサイトで行う一連の手順を「テストケース」,テストケースをいくつかまとめたものを「テストスイート」と呼ぶ。ここで扱うのは「テストケース」である。
Selenium IDE アドオンをインストールすると,Firefox のツールバーに「Se」というアイコンができる。これをクリックすると Selenium IDE のウィンドウが開く。
Selenium IDE の優れた点は,ブラウザで行った操作をそのまま記録することができ,それをそのままボタンひとつで再生することができることである。操作の記録は HTML で記述されているので,テキストベースでの編集が可能である。
実際の例として,NTT ファイナンスの Web ビリングサービスから明細等をダウンロードすることにする。NTT の請求は NTT ファイナンスが行っているのである (nlog(n): NTT の @ビリングと Web ビリング)。ダウンロードできるファイルは,ひと月分あたり3つあるいは4つである。
ファイル名は,「詳細内訳PDF」が「yyyyMMeb電話番号b.PDF」,「詳細内訳CSV」が「yyyyMMeb電話番号w.txt」,「請求概要PDF」が「yyyyMMeb電話番号a.PDF」となっている。
NTT のウェブサイトの問題は,これらのファイルが1つのページから全部アクセスできるのならいいのだが,それぞれ別のページに遷移しなければならず,さらに JavaScript が仕込まれているという具合に変態さ加減が炸裂しているということ。そのため,wget で取得するというようなことが極めて困難であり,Selenium IDE に頼らざるを得ないという状況なのである。トラップの多い暗闇の中,Selenium IDE の光が差し込んだのである。Selenium IDE ありがとう! NTT のサイトは意地が悪すぎ! docomo も似てるよ!
「アクション」メニュー→「テストの記録」,またはウィンドウの右上にある赤い「●」をクリックすると,記録が始まる。ブラウザを操作して,ログイン,画面遷移,ファイルのダウンロード,ログアウトを行う。「ログインID」と「ログインパスワード」はブラウザに記憶させておくとする。以下のようなファイルができあがる。文字コードは UTF-8 になっている。
テストケース: bill.ntt-finance.co.jp.html.txt
このファイルをダウンロードして,拡張子の .txt を削除すればそのまま使える。ただし,「小冊子」には対応していない。NTT のサイトは仕様変更がたまにあるので,すぐに使えなくなる可能性もある。オウンリスクでご利用ください。
テストケースを再生するとき,デフォルトで「Fast」になっているスライダを「Slow」にした方が成功率が高い。
途中で止まってしまった場合は,1行ずつ手動で実行する方法に切り替える。「x」キーを押せば実行,「↓」キーを押せば次の行に移る。したがって,失敗したら「x↓x↓x↓」とキー入力をしていけば完了する。
テストケースを実行して,一定時間待たせたい場面が出てきたら pause を挿入するとよい (Selenium Reference)。
複数月分の明細を取得するのは高度である。頑張るとループ処理もできるようだが (アイフラッグラボ(アイフラッグ)| Selenium IDEのループ処理),その努力は報われなさそう。
Y!mobile の明細書もいろいろと問題がある。まず一番目の問題は,ダウンロードするファイル名が,「ダウンロードした日付時刻」が埋め込まれたものになっているということである。ファイル名には末尾に日付時刻が「yyyyMMddHHmmss」の形式でつく。これは,ダウンロードしたファイル名が重複しないということがもしかすると利点かも知れないが,「何年何月分の明細」かが分からないという大きな欠点となっている。利用者にとってはダウンロードした日付は重要ではない。2回同じものをダウンロードしてしまっても上書きするか捨てるかすればいいだけだからである。ファイル名にダウンロードした日付時刻が入っているだけだと,何月分の明細かが分からないだけでなく,ファイル名を変更しなければならないという手間も発生する。
二番目の問題は,Windows PC でダウンロードすると気がつかないが,Mac でダウンロードするとファイル名が文字化けすることである。以下が文字化けファイルの対応表である。
Webページ名 | Windowsファイル名 | Macファイル名 |
ご請求内訳 | 電話料金内訳明細書yyyyMMddHHmmss.PDF | db¿ààó¾×yyyyMMddHHmmss.PDF |
領収情報 | 領収書yyyyMMddHHmmss.PDF | ÌûyyyyMMddHHmmss.PDF |
通話料 | 通話料明細書yyyyMMddHHmmss.PDF | Êb¿¾×yyyyMMddHHmmss.PDF |
パケット通信料 | パケット通信料明細書yyyyMMddHHmmss.PDF | pPbgÊM¿¾×yyyyMMddHHmmss.PDF |
Windows, Mac のいずれでもファイル名の変更は必要になるのだが,ファイルを開いてみないとファイルの中身が分からないという点で Mac の場合は非常に不便なことになっている。
テストケースをひとつずつ作っていくのは手間だが,1回作ってしまえばしばらくの間は使えるのでお勧めである。この「半自動化」はかなり有効に働くが,「毎月必ず1回行わなければならない」という欠点がある。当月1か月分のダウンロードができるだけで,前月のダウンロードには対応していない。
Master Archive Index
Total Entry Count: 1957