我在Windows 7机器上有以下简单的casperjs脚本(我无法命名实际的URL - 抱歉):
var casper = require('casper').create({verbose:true,logLevel: "debug"});
casper.start('https://[XXX].de', function() {
console.log(this.getCurrentUrl());
});
casper.run();
输出声明它失败了 - 当前的网址是:“about:blank”
[info] [phantom] Starting...
[info] [phantom] Running suite: 2 steps
[debug] [phantom] opening url: https://[XXX].de, HTTP GET
[debug] [phantom] Navigation requested: url=https://[XXX].de, type=Other, lock=true, isMainFrame=true
[warning] [phantom] Loading resource failed with status=fail: https://[XXX].de
[debug] [phantom] Successfully injected Casper client-side utilities
about:blank
[info] [phantom] Step 2/2: done in 39205ms.
[info] [phantom] Done 2 steps in 39309ms
使用Firefox RESTCLient插件发送GET请求时,我得到:
Status Code: 200 OK
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection: close
Content-Type: text/html
Date: Tue, 11 Dec 2012 11:09:37 GMT
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Pragma: no-cache
Server: unknown
Transfer-Encoding: chunked
我的问题是:
我该如何调试?这是一个已知的问题吗?
答案 0 :(得分:4)
似乎传递给casperjs的命令行参数没有传递给PhantomJS。我也遇到了这个问题并解决了这个问题,我运行了我的脚本如下:
PhantomJS.exe --ignore-ssl-errors=true myscript.js
当我尝试以相反的方式传递参数时
PhantomJS.exe myscript.js --ignore-ssl-errors=true
无法正常工作并提供与您所面临的相同的错误。
答案 1 :(得分:3)
要将phantomjs
参数传递给casperjs
,您可以直接更新casper
二进制文件(Linux上的casperjs.py
或Windows上的casperjs.bat
)。
在Linux上,打开casperjs.py
,更新正在形成CASPER_COMMAND
命令的phantomjs
数组并执行。
要添加“--ignore-ssl-errors = yes”,请按以下方式扩展CASPER_COMMAND
,
CASPER_COMMAND.extend(['--ignore-ssl-errors=yes']);
同样,在Windows上或者可以找到更多信息here