Phantomjs 打不开网页
Phantomjs does not open web page
我已经开始使用 casperjs (1.1.0-beta3) + phantomjs (1.9.8) 测试 campus2020 站点。并面临站点未打开但测试只是冻结的问题。我从 phantomjs 站点获取了脚本示例:
var page = require('webpage').create();
page.open('http://informatik.uni-leipzig.de/campus2020', function(status) {
console.log("Status: " + status);
if(status === "success") {
page.render('example.png');
}
phantom.exit();
});
它在其他网站上运行良好。我已经测试了在几个环境中使用 phantomjs 打开 campus2020 站点:win 7,Ubuntu 14.04,使用 ghostdriver 和 java selenium webdriver,使用 phantomjs,它在 RHEL 6.6 的 selenium 网格中 运行。所有这些选项都失败了。我尝试添加 userAgent option and setTimeout。没有改变。我还尝试使用基于 selenium webdriver 的测试框架打开此站点,该框架使用 phantomjs 但它以相同的方式工作 - phantomjs 初始化然后冻结。任何想法如何解决这个问题?
更新
现在我的代码如下所示:
var page = require('webpage').create();
console.log("Page is going to be opened...")
page.open('http://informatik.uni-leipzig.de/campus2020/', function(status) {
console.log("Status: " + status);
if(status === "success") {
page.render('example.png');
}
phantom.exit();
});
page.onConsoleMessage = function(msg, lineNum, sourceId) {
console.log('CONSOLE: ' + msg + ' (from line #' + lineNum + ' in "' + sourceId + '")');
};
page.onError = function (msg, trace) {
console.log(msg);
trace.forEach(function(item) {
console.log(' ', item.file, ':', item.line);
})
}
page.onResourceError = function(resourceError) {
console.log('Unable to load resource (#' + resourceError.id + 'URL:' + resourceError.url + ')');
console.log('Error code: ' + resourceError.errorCode + '. Description: ' + resourceError.errorString);
};
page.onResourceTimeout = function(request) {
console.log('Response (#' + request.id + '): ' + JSON.stringify(request));
};
并且没有显示任何错误。
我不知道为什么会出现这个问题,但是你可以更新到 PhantomJS 2 并且它会工作。 Linux 还没有二进制文件,因此您需要自己构建它。
您还需要更新 CasperJS 版本,因为 1.1-beta3 不支持 PhantomJS 2,但 master branch on GitHub 支持。
phantomjs --debug=true phantom_test.js
我已经开始使用 casperjs (1.1.0-beta3) + phantomjs (1.9.8) 测试 campus2020 站点。并面临站点未打开但测试只是冻结的问题。我从 phantomjs 站点获取了脚本示例:
var page = require('webpage').create();
page.open('http://informatik.uni-leipzig.de/campus2020', function(status) {
console.log("Status: " + status);
if(status === "success") {
page.render('example.png');
}
phantom.exit();
});
它在其他网站上运行良好。我已经测试了在几个环境中使用 phantomjs 打开 campus2020 站点:win 7,Ubuntu 14.04,使用 ghostdriver 和 java selenium webdriver,使用 phantomjs,它在 RHEL 6.6 的 selenium 网格中 运行。所有这些选项都失败了。我尝试添加 userAgent option and setTimeout。没有改变。我还尝试使用基于 selenium webdriver 的测试框架打开此站点,该框架使用 phantomjs 但它以相同的方式工作 - phantomjs 初始化然后冻结。任何想法如何解决这个问题?
更新
现在我的代码如下所示:
var page = require('webpage').create();
console.log("Page is going to be opened...")
page.open('http://informatik.uni-leipzig.de/campus2020/', function(status) {
console.log("Status: " + status);
if(status === "success") {
page.render('example.png');
}
phantom.exit();
});
page.onConsoleMessage = function(msg, lineNum, sourceId) {
console.log('CONSOLE: ' + msg + ' (from line #' + lineNum + ' in "' + sourceId + '")');
};
page.onError = function (msg, trace) {
console.log(msg);
trace.forEach(function(item) {
console.log(' ', item.file, ':', item.line);
})
}
page.onResourceError = function(resourceError) {
console.log('Unable to load resource (#' + resourceError.id + 'URL:' + resourceError.url + ')');
console.log('Error code: ' + resourceError.errorCode + '. Description: ' + resourceError.errorString);
};
page.onResourceTimeout = function(request) {
console.log('Response (#' + request.id + '): ' + JSON.stringify(request));
};
并且没有显示任何错误。
我不知道为什么会出现这个问题,但是你可以更新到 PhantomJS 2 并且它会工作。 Linux 还没有二进制文件,因此您需要自己构建它。
您还需要更新 CasperJS 版本,因为 1.1-beta3 不支持 PhantomJS 2,但 master branch on GitHub 支持。
phantomjs --debug=true phantom_test.js