我有一个casperjs脚本,当我在linux服务器上运行时会提供所需的结果,但是当我从笔记本电脑运行时,它不起作用。
我该如何调试?工作日志:
[info] [phantom] Starting...
[info] [phantom] Running suite: 3 steps
[debug] [phantom] opening url: http://caspertest.grsrv.com/, HTTP GET
[debug] [phantom] Navigation requested: url=http://caspertest.grsrv.com/, type=Other, willNavigate=true, isMainFrame=true
[debug] [phantom] Navigation requested: url=https://caspertest.grsrv.com/my_app, type=Other, willNavigate=true, isMainFrame=true
[debug] [phantom] Navigation requested: url=https://caspertest.grsrv.com/my_app/, type=Other, willNavigate=true, isMainFrame=true
[debug] [phantom] url changed to "https://caspertest.grsrv.com/my_app/"
[debug] [phantom] Navigation requested: url=https://caspertest.grsrv.com/my_app/#/auth, type=Other, willNavigate=true, isMainFrame=true
[debug] [phantom] url changed to "https://caspertest.grsrv.com/my_app/#/auth"
[debug] [phantom] Successfully injected Casper client-side utilities
[info] [phantom] Step anonymous 2/3 https://caspertest.grsrv.com/my_app/#/auth (HTTP 200)
[info] [remote] attempting to fetch form element from selector: 'form'
[debug] [remote] Set "null" field value to test
[debug] [remote] Set "null" field value to ****
[debug] [phantom] Capturing page to /home/grsrvadmin/gs/casper/ss.png
[info] [phantom] Capture saved to /home/grsrvadmin/gs/casper/ss.png
[debug] [phantom] Mouse event 'mousedown' on selector: input[id="loginButton"]
[debug] [phantom] Mouse event 'mouseup' on selector: input[id="loginButton"]
[debug] [phantom] Mouse event 'click' on selector: input[id="loginButton"]
[info] [phantom] Step anonymous 2/3: done in 1556ms.
[info] [phantom] Step _step 3/3 https://caspertest.grsrv.com/my_app/#/auth (HTTP 200)
[info] [phantom] Step _step 3/3: done in 1569ms.
[debug] [phantom] Navigation requested: url=https://caspertest.grsrv.com/my_app/#/agreement/r8moskcfv7c80gpcd40fl12nmpf9e0nb, type=Other, willNavigate=true, isMainFrame=true
[debug] [phantom] url changed to "https://caspertest.grsrv.com/my_app/#/agreement/r8moskcfv7c80gpcd40fl12nmpf9e0nb"
[debug] [phantom] url changed to "https://caspertest.grsrv.com/my_app/#/agreement/r8moskcfv7c80gpcd40fl12nmpf9e0nb"
[info] [phantom] waitFor() finished in 217ms.
[info] [phantom] Step anonymous 4/4 https://caspertest.grsrv.com/my_app/#/agreement/r8moskcfv7c80gpcd40fl12nmpf9e0nb (HTTP 200)
[debug] [phantom] Mouse event 'mousedown' on selector: input[id="aggr_actionAccept"]
[debug] [phantom] Mouse event 'mouseup' on selector: input[id="aggr_actionAccept"]
[debug] [phantom] Mouse event 'click' on selector: input[id="aggr_actionAccept"]
[info] [phantom] Step anonymous 4/4: done in 1813ms.
[info] [phantom] Done 4 steps in 1826ms
[debug] [phantom] Navigation requested: url=about:blank, type=Other, willNavigate=true, isMainFrame=true
[debug] [phantom] url changed to "about:blank"
登录Windows机器:
[info] [phantom] Starting...
[info] [phantom] Running suite: 3 steps
[debug] [phantom] opening url: http://caspertest.grsrv.com/, HTTP GET
[debug] [phantom] Navigation requested: url=http://caspertest.grsrv.com/, type=Other, willNavigate=true, isMainFrame=true
[debug] [phantom] Navigation requested: url=https://caspertest.grsrv.com/my_app, type=Other, willNavigate=true, isMainFrame=true
[debug] [phantom] Navigation requested: url=https://caspertest.grsrv.com/my_app/, type=Other, willNavigate=true, isMainFrame=true
[debug] [phantom] url changed to "https://caspertest.grsrv.com/my_app/"
[debug] [phantom] Navigation requested: url=https://caspertest.grsrv.com/my_app/#/auth, type=Other, willNavigate=true, isMainFrame=true
[debug] [phantom] url changed to "https://caspertest.grsrv.com/my_app/#/auth"
[debug] [phantom] Successfully injected Casper client-side utilities
[info] [phantom] Step anonymous 2/3 https://caspertest.grsrv.com/my_app/#/auth (HTTP 200)
[info] [remote] attempting to fetch form element from selector: 'form'
[debug] [phantom] Navigation requested: url=about:blank, type=Other, willNavigate=true, isMainFrame=true
[debug] [phantom] url changed to "about:blank"
脚本:
var casper = require('casper').create ({
waitTimeout: 60000,
stepTimeout: 60000,
verbose: true,
logLevel: "debug",
viewportSize: {
width: 1366,
height: 768
},
pageSettings: {
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:50.0) Gecko/20100101 Firefox/50.0",
"loadImages": true,
"loadPlugins": true,
"webSecurityEnabled": false,
"ignoreSslErrors": true
},
onWaitTimeout: function() {
casper.echo('Wait TimeOut Occured');
},
onStepTimeout: function() {
casper.echo('Step TimeOut Occured');
}
});
casper.start('http://caspertest.grsrv.com/', function() {
this.fillSelectors('form', {
'input[id="userName"]': 'test',
'input[id="userPassword"]': 'test',
}, false);
this.capture('ss.png');
this.click('input[id="loginButton"]')
});
casper.waitForSelector('#aggr_actionAccept', function() {
this.click('input[id="aggr_actionAccept"]')
});
这就是我的执行方式:
casperjs --ignore-ssl-errors=true test.js
资源与客户端有关,我在Windows机器上使用VPN来访问浏览器上的资源。它正在使用的linux机器是客户端本身
答案 0 :(得分:3)
添加您需要添加以下回调,以捕获所有错误:resource.error
事件处理程序:
casper.on("resource.error", function(resourceError){ console.log('Unable to load resource (#' + resourceError.id + 'URL:' + resourceError.url + ')'); console.log('Error code: ' + resourceError.errorCode + '. Description: ' + resourceError.errorString); });
看来,这是一个known PhantomJS bug(已在2.5 beta版中修正) 您可以从this page下载PhantomJS 2.5 beta。
另见:
CasperJS/PhantomJS doesn't load https page
PhantomJS failing to open HTTPS site
casper
.on("error", function(msg){ this.echo("error: " + msg, "ERROR") })
.on("page.error", function(msg, trace){ this.echo("Page Error: " + msg, "ERROR") })
.on("remote.message", function(msg){ this.echo("Info: " + msg, "INFO") });