PhantomJS のラッパー Nightmare を試してみる


話題らしいので Nightmare を弄ってみる

インストール

npm install nightmare

サンプルコード (+ キャプチャ)

公式のサンプルに画面キャプチャを付け足してみた

Nightmare

example_nightmare.js
var Nightmare = require('nightmare');

new Nightmare()
  .goto('http://yahoo.com')
  .type('input[title="Search"]', 'github nightmare')
  .click('.searchsubmit')
  .screenshot('yahoo.png')
  .run();

CasperJS

ちなみに CasperJS で書くとこんな感じ

example_casper.js
var casper = require('casper').create();

casper.start('http://google.fr/', function() {
    this.fill('form[action="/search"]', { q: 'casperjs' }, true);
});

casper.then(function() {
  this.capture('google.png');
});

casper.run();

実行

$ node sample_nightmare.js

キャプチャ画像

背景透明になる(サイズ大きいので縮小した)

API

  • .goto(url)
  • .back()
  • .refresh()
  • .url(cb)
  • .click(selector)
  • .type(selector, text)
  • .upload(selector, path)
  • .evaluate(fn, cb, [arg1, arg2,...])
  • .wait()
  • .wait(ms)
  • .wait(selector)
  • .wait(fn, value, [delay])
  • .screenshot(path)
  • .useragent(useragent)
  • .viewport(width, height)
  • .use(plugin)
  • .run(cb)

プラグイン

nightmare-swiftly をインストールすると下記が使える模様

  • .login(email, password)
  • .task(instructions, uploads, callback)
  • .state(callback)
  • .wait(state, callback)
  • .download(taskUrl, path)
  • .approve(taskUrl)

感想

CasperJS にある Testing みたいの無いっぽい。
試してないけどプラグインが上手く使えればいい感じかも。

参考