1

機能していないCasperJS JQueryイベント処理の簡単な例がありますが、見たことはありません

* page event received***********

印刷されます。代わりに、次のログが表示されます

[error] [phantom] Wait timeout of 20000ms expired, exiting.
Wait timeout of 20000ms expired, exiting.

何か不足していますか?

CasperJS 1.0.2 を使用しています

eventtest.html

<!doctype html>
<html lang="en">
<head>
  <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
</head>
<body>
<div>Event test for CasperJS</div>

<script>

setTimeout(function(){ $(document).trigger("pageRendered");}, 5000)

 /*
 $(document).on("pageRendered",  function(){
    //window.__pageRendered_triggered__ = true;
    //alert("page loaded triggered");
    console.log("page loaded triggered");
 });*/

</script>

</body>
</html>

eventtest.js

var casper = require('casper').create({
    verbose: true,
    logLevel: "debug",
    viewportSize: { 
        width: 1024, //970, 
        height: 768 // 3074
        },
    waitTimeout: 10000
});

casper.start('http://localhost/jqueryev.html', function() {});

casper.waitFor(function () {
    return this.evaluate(function testForJQuery() {
        return typeof(window.$) !== 'undefined';
    });
}, function then() {
     this.echo('*      [event] jquery loaded');
});

casper.evaluate(function() {
    // this fails...
    $(document).on('pageRendered', function() {
         window.__pageRendered_triggered__ = true;
    });
});

casper.waitFor(function() {
    return this.evaluate(function() {
        return window.__pageRendered_triggered__ === true;
    })===true;
}, function then() {
    console.log("*     page event received***********");
});

casper.run();
4

1 に答える 1

0

評価を thenEvaluate に変更すると、イベントをバインドする前に JQuery がロードされていることを確認する必要があるようです。

元。

casper.thenEvaluate(function() {
  $(document).on('pageRendered', function() {
     window.__pageRendered_triggered__ = true;
  });
});
于 2013-09-26T03:26:28.963 に答える