読者です 読者をやめる 読者になる 読者になる

non vorrei lavorare

ブログ名の通りです。javascript three.js mruby rust OCaml golang julialang blender

EC-CUBEで21世紀のお店屋さんごっこ~おきゃくさんをたくさんとうろくするよ~

おはようございます。先日、通っている園の卒園式がありました。早いもので、来年は長男が卒園します。kjunichiです。

背景

前回準備したdockerで作ったEC-CUBEの店舗にお客さんを登録しないと、いつまで待ってもお客さんが来ません。

abrakatabura.hatenablog.com

きみのおみせにたくさんおきゃくさんがきてかいものをしてもらうじゅんびをするよ。

こんぴゅーたーにおきゃくさんをとうろくしてもらおう!

今回は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);
  });

かいいんとうろくする

コンピュータに自動的にやってもらう手順

  • お店の入口のページを表示
  • 会員登録のリンクをクリック
  • お客さんの情報を入力する
  • 確認ボタンをクリックする
  • 確認画面の確認ボタンをクリックする

やってみて困ったところ

nightmareがおそい

ぺーじがひょうじされるのをまつひつようがあり、ひとつだけうごかすとじかんがかかる。

とちゅうでうごかなくなる。

どうじにいつつくらいnightmareをうごかして、じかんあたりのしょりけんすうをおおくした。 これにはNode.jsのclusterをつかうことで、かんたんにつくることができた。

たいさく

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のコンテナが動かなくなる