我是phantomJS的新手,这是我到目前为止所做的:
var page = require('webpage').create();
console.log('The default user agent is ' + page.settings.userAgent);
page.settings.userAgent = 'SpecialAgent';
page.open('http://google.com', function (status) {
if (status !== 'success') {
console.log( 'Unable to access network' );
} else {
console.log( 'Opened ok' );
page.includeJs( 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js', function() {
console.log( 'include JS callback' );
page.evaluate(function(){
console.log('include JS callback - eval');
});
});
console.log( 'After include JS' );
}
phantom.exit();
});
但输出是
The default user agent is Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.8 Safari/534.34
Opened ok
After include JS
正如您所看到的,'include JS callback'
和'include JS callback - eval'
未被记录,问题出在哪里?
答案 0 :(得分:11)
西部幻影式问题中最快的枪。你太早退出了。 page.includeJs
是一个异步函数,因为它必须发送一个获取资源的请求。你可以看到,因为它有一个回调。您应该将phantom.exit();
移至page.includeJs
回调的末尾。还应该从page.includeJs
回调触发/移动所有进一步处理。
如果您希望显示'include JS callback - eval'
,则必须另外注册page.onConsoleMessage
事件。