为了方便起见,在这个问题中,我将contents
常量定义为我的HTML文件。
var webPage = require('webpage');
var page = webPage.create();
const contents = `
<!DOCTYPE html>
<html lang="en">
<head>
<script type="text/javascript">
console.log("TEXT WITHIN HTML");
</script>
</head>
<body></body>
</html>
`;
page.open(contents, function(status) {
console.log('Status: ' + status);
page.evaluate("function() { console.log('page.evaluated stuff')}");
});
page.onConsoleMessage = function(msg, lineNum, sourceId) {
console.log('CONSOLE: ' + msg + ' (from line #' + lineNum + ' in "' + sourceId + '")');
};
运行$ phantomjs test.js
:时
$ phantomjs test.js
Status: success
CONSOLE: page.evaluated stuff (from line # in "")
它成功地捕获了console.log
,而不是HTML文件的<scripts>
部分中的page.evaluate
。
为什么?我对Phantomjs不是很熟悉。
Phantomjs不支持ES6。
我测试了你的代码是否有错误。
我不知道你是怎么得到结果的。试试这个。
var webPage = require('webpage');
var page = webPage.create();
var contents = '<!DOCTYPE html><html lang="en"><head> <script type="text/javascript"> console.log("TEXT WITHIN HTML\n");</script> </head> <body></body> </html>';
page.open("about:blank", function(status) {
page.content = contents;
console.log('Status: ' + status);
page.evaluate(function () {
(function() { console.log('page.evaluated stuff')})()
});
});
page.onConsoleMessage = function(msg, lineNum, sourceId) {
console.log('CONSOLE: ' + msg + ' (from line #' + lineNum + ' in "' + sourceId + '")');
};