おはようございます。先日、通っている園の卒園式がありました。早いもので、来年は長男が卒園します。@kjunichiです。
背景
前回準備したdockerで作ったEC-CUBEの店舗にお客さんを登録しないと、いつまで待ってもお客さんが来ません。
きみのおみせにたくさんおきゃくさんがきてかいものをしてもらうじゅんびをするよ。
こんぴゅーたーにおきゃくさんをとうろくしてもらおう!
今回はnightmareを使って、EC-CUBEのサイトに実際にアクセスして、入力して仮登録のメールを受信して、 本登録する作業を自動化してみるよ。
Nightmareの使い方
nightmareはv2.0からElectronを使うようになったWebサイト向けののテストツール。 昨今のJavaScriptなページでも頑張ると自動ブラウズできる模様。
超基本的なnightmareの使い方は以下。
const Nightmare = require('nightmare'); const nightmare = Nightmare({ show: true, switches : {'ignore-certificate-errors': null} }); nightmare .goto('https://localhost:8443/') .evaluate(() => { return document.body.innerHTML; }) .end() .then((result) => { console.log(result); }) .catch((error) => { console.error('Search failed:', error); });
かいいんとうろくする
コンピュータに自動的にやってもらう手順
- お店の入口のページを表示
- 会員登録のリンクをクリック
- お客さんの情報を入力する
- 確認ボタンをクリックする
- 確認画面の確認ボタンをクリックする
EC-CUBEのサイトの会員数が10万人越えた。 #テスト環境 https://t.co/FheT20B7I6 pic.twitter.com/4qM3PCjFGt
— kjunichi (@kjunichi) 2017年3月20日
やってみて困ったところ
nightmareがおそい
ぺーじがひょうじされるのをまつひつようがあり、ひとつだけうごかすとじかんがかかる。
とちゅうでうごかなくなる。
どうじにいつつくらいnightmareをうごかして、じかんあたりのしょりけんすうをおおくした。 これにはNode.jsのclusterをつかうことで、かんたんにつくることができた。
たいさく
docker-composeで動かしたコンテナ群を死活監視して、死んだらrestartさせるやつ探してもgoogle力が足りなくて、マジな奴しか見つからずホビーユース向けなのがなかったからnode.jsで作った。 #おはよう
— kjunichi (@kjunichi) 2017年3月21日
docker-compose psのけっかをちぇっくして、こんてながおちてるときはさいきどうするようにした。
成果物
git clone https://github.com/kjunichi/eccube-autodrive.git cd eccube-autodrive npm install node registermember.js
学んだこと
- node.jsのClusterモジュールの使い方
- docker-composeでの死活監視
- 大量にアクセスすると、hhvm,mailcatcherのコンテナが動かなくなる