0

作为测试 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?

谢谢!

4

1 回答 1

2

至于为什么alert('hi')看不到,这个链接给出了很好的解释。基本上,casperjs/phantomjs 是一个无头浏览器,因此不能有窗口或对话框。

但是将您的脚本注入远程页面并执行它们,您可以:这是Casperjs 文档中的方法。

这是您的脚本稍作修改(请注意,此处的 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();
});
于 2013-11-06T06:12:03.760 回答