sto valutando phantom.js e zombie.js. Mi aspettavo il trade-off di essere quel fantasma ha un più ampio supporto di documenti (in quanto utilizza un vero e proprio renderer) mentre zombie è più veloce (dal momento che nessun motore di rendering è utilizzato). Tuttavia zombie sembra molto più lento nel test che ho fatto. Ha senso ciò?prestazioni di phantom.js vs zombie.js
Sto pensando forse di zombie attende l'intera pagina per caricare prima della visita() restituisce (tra cui l'esecuzione di tutti gli script e loadsing CSS), mentre i rendimenti fantasma immediatelly dopo l'avvio() (io ho usato casperjs) che mi permette di continuare senza attendere l'intera pagina.
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();
});
});
Zombie.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)
});
});