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 はヘッドレス ブラウザであるため、ウィンドウやダイアログを表示できません。

ただし、スクリプトをリモート ページに挿入して実行することもできます

これはスクリプトをわずかに変更したものです (ここでの 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 に答える