我是PhantomJS / CasperJS的初学者。
我只是想开始一个会话并确认它没问题。
这是我的代码:
var casper = require('casper').create({
verbose: true,
logLevel: 'debug',
pageSettings: {
loadImages: false,
loadPlugins: false,
userAgent: 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0'
}
});
casper.on('remote.message', function(msg) {
this.echo('remote message caught: ' + msg);
});
casper.on("page.error", function(msg,trace) {
this.echo("Page Error: " + msg, "ERROR");
});
casper.start('https://www.google.fr');
casper.then(function(){
console.log('Page Loaded');
this.test.assertTitle('Google', 'Welcome to Google');
});
casper.run();
当我运行这个简单的脚本时,我得到:
C:\Users\Booky\Documents\nike_project>casperjs --ignore-ssl-errors=true --ssl-protocol=tlsv1 debug.js
C:\Users\Booky\Documents\nike_project>[info] [phantom] Starting...
[info] [phantom] Running suite: 3 steps
[debug] [phantom] opening url: https://www.google.fr/, HTTP GET
[debug] [phantom] Navigation requested: url=https://www.google.fr/, type=Other, willNavigate=true, isMainFrame=true
[debug] [phantom] url changed to "https://www.google.fr/"
[debug] [phantom] Successfully injected Casper client-side utilities
[debug] [phantom] start page is loaded
[info] [phantom] Step anonymous 3/3 https://www.google.fr/ (HTTP 200)
Page Loaded
[debug] [phantom] Navigation requested: url=about:blank, type=Other, willNavigate=true, isMainFrame=true
[debug] [phantom] url changed to "about:blank"
我到处搜索,但我没有找到任何对我问题的回应。
答案 0 :(得分:4)
在CasperJS和PhantomJS Github Repos上有关于重定向到/打开的空白页面(请参阅下面的更新):空白页
Issue 13738 Phantomjs opens a about:blank page instead of the URL
Issue 1485 Redirect to url=about:blank
2017年3月9日更新:问题1485已解决。请参阅@jefleponot comment on GitHub了解解决方案
我自己没有确认,但@Ross评论说为phantomjs添加选项--ssl-protocol = any解决了这个问题
在Windows上,默认代理设置可能会导致大量网络 延迟(请参阅发行说明中的已知问题)。解决方法是 完全禁用代理,例如通过启动PhantomJS --proxy-type = none命令行参数。 1
您的代码正常运行,具有以下版本:
[info] [phantom] Starting...
[info] [phantom] Running suite: 3 steps
[debug] [phantom] opening url: https://www.google.fr/, HTTP GET
[debug] [phantom] Navigation requested: url=https://www.google.fr/, type=Other, lock=true, isMainFrame=true
[debug] [phantom] url changed to "https://www.google.fr/"
[debug] [phantom] Successfully injected Casper client-side utilities
[debug] [phantom] start page is loaded
[info] [phantom] Step 3/3 https://www.google.fr/ (HTTP 200)
Page Loaded
PASS Welcome to Google
[info] [phantom] Step 3/3: done in 262ms.
[info] [phantom] Done 3 steps in 341ms
在casperjs 1.1.x beta和PhantomJS> 1.9.8中存在一些页面导航问题,其中建议将PhantomJS降级为1.9.7
我会建议,如果可能的话,尝试不同的版本
Github问题1485解决方案或@Ross解决方案可以解决问题 - 任何评论?
答案 1 :(得分:2)
我的步骤也有同样神秘的调试记录:
[debug] [phantom] Navigation requested: url=about:blank, type=Other, willNavigate=true, isMainFrame=true
[debug] [phantom] url changed to "about:blank"
在我的情况下,我需要单击AJAX表单上的“提交”按钮,该表单是href='javascript:;'
的链接元素。事实证明,这本身并不是主要问题。相反,他们的Web系统是使用Apache Wicket java Web框架构建的,该框架为每次搜索交互发出有状态会话。它通过重定向发生 - 这是关键点。
现在,CasperJS支持两个引擎 PhantomJS 和 SlimerJS ...在深入了解CasperJS文档时,我打开了这个链接页面Differences between SlimerJS and PhantomJS,其中指出:
'PhantomJS不进行重定向,而SlimerJS则进行重定向。'
这里的参考是我的选项设置为最松散并且启用了调试(其中一些是默认值):
var casper = require('casper').create({
engine: 'slimmerjs',
verbose: true,
logLevel: 'debug',
exitOnError: false,
ignoreSslErrors: true,
pageSettings: {
javascriptEnabled: true,
loadImages: true,
loadPlugins: true,
localToRemoteUrlAccessEnabled: true,
userAgent: 'Mozilla/5.0 (X11; CrOS x86_64 8172.45.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.64 Safari/537.36',
XSSAuditingEnabled: false,
logLevel: 'debug'
}
});