私はphantom.jsとzombie.jsを評価しています。トレードオフとして、ファントムは (実際のレンダラーを使用するため) より幅広いドキュメントをサポートし、ゾンビは (レンダリング エンジンを使用しないため) 高速であると予想しました。ただし、私が行ったテストでは、ゾンビの方がはるかに遅いようです。これは理にかなっていますか?
私はおそらくゾンビがvisit()が戻る前に(すべてのスクリプトの実行とcssのロードを含む)完全なページがロードされるのを待っていると考えていますが、ファントムはstart()(私はcasperjsを使用しました)の直後に戻り、ページ全体を待たずに続行できます.
Phantom.js
casper.userAgent("Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.98 Safari/534.13");
casper.test.begin('bing search', 2, function(test) {
casper.start('http://www.bing.com/', function() {
this.waitUntilVisible('#sb_form_q', function() {
this.sendKeys('#sb_form_q', "book", true);
this.click('#sb_form_go');
this.waitUntilVisible('#count', function() {
var val = this.evaluate(function() {
return document.getElementById('count').innerText
});
console.log(val)
});
});
}).run(function() {
test.done();
});
});
ゾンビ.js
var Browser = require("zombie");
var browser = new Browser()
browser.userAgent = "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.98 Safari/534.13"
browser.visit("http://www.bing.com/", function() {
browser.fill("#sb_form_q", "book");
browser.pressButton("#sb_form_go");
function resultArrived(window) {
return window.document.querySelector("#count")
}
browser.wait(resultArrived, function() {
console.log(browser.document.querySelector("#count").innerHTML)
});
});