考虑以下代码......
var page = require('webpage').create();
console.log('The default user agent is ' + page.settings.userAgent);
page.settings.userAgent = 'Lisas headless browser';
page.open('http://www.httpuseragent.org', function(status) {
if (status !== 'success')
{
console.log('Unable to access network or site is down');
}else{
page.includeJs(
// Include the https version, you can change this to http if you like.
'https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js',
function() {
(page.evaluate(function() {
// jQuery is loaded, now manipulate the DOM
console.log(document.getElementById('myagent').textContent);
}))
}
);
}
phantom.exit();
});
我试图获取一些插入jquery的代码,然后允许我继续执行操作,但它没有评估includeJs()
答案 0 :(得分:2)
编辑:正如Vaviloff在下面的评论中所提到的,您需要订阅' page.onConsoleMessage'事件,以便在page.evaluate()回调中使用console.log()。我已更新下面的代码块以反映这一点。
以下代码将使用jQuery从页面捕获用户代理文本,并捕获已被操作的页面内容的证据。
var page = require('webpage').create();
console.log('The default user agent is ' + page.settings.userAgent);
page.settings.userAgent = 'Lisas headless browser';
// simple 'page.onConsoleMessage' event handler
page.onConsoleMessage = function (msg) {
console.log('page.onConsoleMessage');
console.log(msg);
};
page.open('http://www.httpuseragent.org', function(status) {
if (status === 'success') {
// capture the rendered page to 'before.jpg'
page.render('before.jpg');
// load the jQuery library
page.includeJs(
'http://code.jquery.com/jquery-1.8.2.min.js',
function() {
// jQuery is loaded, now manipulate the DOM
var agent = page.evaluate(function() {
// This code is executed within the loaded page
// get the user agent string
var text = $('#myagent').text();
// log the text to the console
console.log('Inside page.evaluate ::', text);
// time for some mischief
$('#myagent').html('PhantomJS Strikes Again!');
// return the text string
return text;
});
// capture the evidence
page.render('after.jpg');
// print the user agent text
console.log(agent);
// exit now
phantom.exit(0);
});
} else {
console.log('Unable to access network or site is down');
phantom.exit(1);
}
});
产生的控制台输出:
The default user agent is Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/538.1 (KHTML, like Gecko) PhantomJS/2.1.1 Safari/538.1
page.onConsoleMessage
Inside page.evaluate :: Your Http User Agent string is: Lisas headless browser
Your Http User Agent string is: Lisas headless browser