作为测试javascript是否正在从CasperJS正确执行的简单方法,我正在尝试在页面上弹出javascript中的警告框。我的最终目标是运行更复杂的javascript函数,但是现在我只想从容易开始(即如果有一个本机CasperJS警报框函数,我不想使用它,因为我想让javascript工作)
var casper = require("casper").create();
casper.start("http://www.google.com", function() {
});
casper.thenEvaluate(function() {
alert('hi');
});
casper.then(function(){
this.wait(500, function() {
this.echo("I've waited for 500 milliseconds");
});
this.capture('google.png', {
top: 0,
left: 0,
width: 1500,
height: 1000
});
});
casper.run(function() {
this.echo(this.getTitle()); // Google
this.exit();
});
当我运行此脚本时,我会访问http://www.google.com(作为屏幕截图中的证据),但不会显示警告框。
有谁知道如何从CasperJS运行javascript?
谢谢!
答案 0 :(得分:2)
至于为什么alert('hi')
不会被看到,这个link给出了一个很好的解释。基本上,casperjs / phantomjs是一个无头浏览器,因此不能有窗口或对话框。
但是将脚本注入远程页面并执行它们可以:这里是how in Casperjs docs。
这里稍微修改了你的脚本(注意这里的jquery.js应该在本地文件系统中,在你发出命令的同一个文件夹中,在控制台中启动CasperJS):
var casper = require("casper").create({
clientScripts: ["jquery.js"]
});
casper.start("http://www.google.com/ncr");
casper.then(function(){
this.evaluate(function() {
$("input[name='q']").val("CasperJS execute javascript on remote page");
});
});
casper.then(function(){
this.capture('google.png', {
top: 0,
left: 0,
width: 1500,
height: 1000
});
});
casper.run(function() {
this.echo(this.getTitle()); // Google
this.exit();
});