楽天銀行のハッピープログラムのステージを上げるために楽天競馬に自動ログインして100円だけ入金するためのプログラムを作ったよ


※この投稿は楽天銀行のハッピープログラムを利用している方向けの記事になります
※ハッピープログラムについては公式ページをご確認ください

少し前に楽天銀行のハッピープログラムが改悪されました
積み立てNISAで毎日積み立てを行うことでハッピープログラムのステージアップと毎月それなりの楽天ポイントが獲得できるということを改悪ちょっと前に知った自分としては少しショックな出来事でした。

ステージアップすることでATM手数料が無料になったりとポイント以外のメリットもあるので、改悪後のステージアップの方法についてアフィブログなど見ていたところ「楽天競馬に100円だけ入金して出金するを毎日やればOK」みたいな記事を発見。
回数が稼げるのでステージアップは確かに可能、ただ毎日やるのはめんどくさいので、勉強がてらseleniumで自動入金プログラムを作ってみることにしました。

とりあえずコードをgithub上に公開しましたのでreadmeみてどうぞ・・・
この投稿ではちょっとだけつまづいた点について書こうかと思います
https://github.com/rohisama/raku-keiba-auto

Windowsで動いたけどUbuntuで動かん

OS違うと挙動が変わるってのはあるあるですね。

なんかエラーが出る

具体的には実行時に以下のようなエラーメッセージが出ていました

selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally
  (unknown error: DevToolsActivePort file doesn't exist)
  (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)

とりあえずggったら有力な情報があったのでtry
私の環境では options.add_argument("--no-sandbox") を追加で動くようになりました

新規タブ画面の要素が取れない

楽天競馬のTOPページから[入金]ボタンを押したときに新規タブが開いてログインページに遷移するのですが、そのページの要素(ID/PWのテキストボックス)が取れないエラーが出ました。
これはsleep突っ込んだらとれるようになりました。
もうちょっといい方法があるのでしょうが、とりあえず使えればOKということで・・・

あとは、こいつをcrontabとかで毎日正午くらいに実行するようにしておけば私のハッピープログラムのステージは一生保証されることでしょう・・・フヒヒ
まぁ、ページがリニューアルされたら対応は必要になりますが(失敗時にSlack通知でもさせるか・・・)
ちなみに、楽天のほかの公営競技についてもハッピープログラムの対象になるそうなので、その辺もそのうち自動化してこうかな。