CasperJsの使い方メモ

Posted by Tatsuyano on Wed, Apr 6, 2016
In
Tags js, nodejs, casperjs

日本語のページのキャプチャを取る

日本語のページのキャプチャを撮るには、CasperJsを実行するサーバーに日本語フォントが入っている必要がある。

sudo yum -y groupinstall "Japanese Support"

CasperJsを一時停止させる

3秒プログラムを停止させてからキャプチャを撮る

casper.then(function() {
  this.wait(3000, function() {
    console.log('3秒後');
    this.capture('capture/test.png');
  });
});

CasperJsからJSONをPOSTする

casper.start();
casper.open('http://hoge.com/api/hoge', {
  method: 'post',
  headers: {
    'Accept-Language': 'ja'
  },
  data: {
    uuid   : 'UUID',
    secret : 'SECRET'
  }
});

// this.getPageContent()で結果を取得できる
casper.then(function(response) {
  var json = JSON.parse(this.getPageContent());
});

CasperJsにメソッドを定義する

casper.then(function() {
  this.createMarkdown('title','describe');
});

casper.createMarkdown = function(title,describe){
  template = fs.read('result/api_template.md', 'utf8');
  template = template.replace(/{{title}}/g    ,title);
  template = template.replace(/{{describe}}/g ,describe);
  fs.write('result/'+title+'.md', template);
};

ファイルアップロード(type=“file”)を操作する

 casper.then(function() {
   // 画像はフルパスで、evaluate()の外で実行する
   this.page.uploadFile('input[type="file"]', '/vagrant/sample_image.jpg');

   this.evaluate(function(number, title) {
     $('[name="coupon[number]"]').val(number);
     $('[name="coupon[title]"]').val(title);

     document.querySelector('form').submit();

   }, '999', 'title_test');
 });