我正在尝试使用 phantomjs(版本 1.9.1,在 Windows 上)访问一些 QUnit 测试 url。我在公司站点的代理后面,但我尝试访问的 URL 是从我的本地开发工作站提供的,而且我什至尝试使用其他两个浏览器(Hv3 和 Dooble)访问相同的 URL 没有必要代理设置,即使他们无法执行 QUnit javascript,他们也会收到 HTML 响应。
所以我什至尝试将 javascriptEnabled 设置(加上另外几个设置,请参见下面的代码)调整为 false 以尝试获取原始 HTML,但无济于事。我已经将对 page.open 的调用包含在 try/catch 中,但显然这不是因为异常;而是在执行最后一个 phantom.exit() 语句之前的 console.log 语句。
此外,我遵循了来自https://github.com/ariya/phantomjs/wiki/Network-Monitoring的建议,包括来自 page.onResourceRequested、page.onError 和 page.onResourceReceived 的日志记录,并且仅执行 onResourceReceived 的回调。而且我正在指定 --proxy-type=none 命令行参数,一切都无济于事。
下面的代码和输出,在此先感谢。我不知所措;也许这是一个phantomjs问题?只是想在报告之前排除一切。
代码:
var page = require('webpage').create();
page.onResourceRequested = function (request) {
console.log('Request ' + JSON.stringify(request, undefined, 4));
};
page.onResourceReceived = function (response) {
console.log('Receive ' + JSON.stringify(response, undefined, 4));
};
page.onError = function (msg, trace) {
console.log(msg);
trace.forEach(function(item) {
console.log(' ', item.file, ':', item.line);
})
}
page.settings.webSecurityEnabled = false;
page.settings.localToRemoteUrlAccessEnabled = true;
//page.settings.javascriptEnabled = false;
for (var setting in page.settings) {
console.log(setting + ": " + page.settings[setting]);
}
try {
page.open('http://local.example.com:9001/test/workflow', function() {
console.log('page opened');
});
}
catch(xcep) {
console.log(xcep);
}
console.log('before exit');
phantom.exit();
输出:
XSSAuditingEnabled: false
javascriptCanCloseWindows: true
javascriptCanOpenWindows: true
javascriptEnabled: true
loadImages: true
localToRemoteUrlAccessEnabled: true
userAgent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.1 Safari/534.34
webSecurityEnabled: false
Request {
"headers": [
{
"name": "User-Agent",
"value": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.1 Safari/534.34"
},
{
"name": "Accept",
"value": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
}
],
"id": 1,
"method": "GET",
"time": "2013-07-12T09:49:58.262Z",
"url": "http://local.example.com:9001/test/workflow"
}
before exit