如何监听页面加载时触发的事件

时间:2014-07-28 18:54:08

标签: javascript testing phantomjs casperjs

如何编写可以侦听页面加载时触发的事件的CasperJS测试?我对页面末尾的火灾感兴趣。

// my-page.html
<html>
  ...
  <body>
    ...
    <script type="text/javascript">
      $(function() {
        fireInterestingEvent();
      });
    </script>
  </body>
</html>

我尝试过注入客户端脚本,但似乎在fireInterestingEvent()已经解雇后加载。

// test/my-test.js
casper.options.clientScripts.push("test/lib/my-client-script.js")

// test/lib/my-client-script.js
listenToInterestingEvent();

我还尝试在页面加载完成之前初始化测试对象,但我的对象不会停留在DOM上。

// test/my-test.js
casper.on('load.started', function() {
  this.evaluate(function() {
    window.testObject = { foo: 'bar' };
  });
});

// my-page.html
<script type="text/javascript">
  if (window.testObject) listenToInterestingEvent(); // window.testObject is undefined
  fireInterestingEvent();
</script>

1 个答案:

答案 0 :(得分:1)

@Artjom B.在评论部分找到了它。 window期间url.changed上的对象初始化有效,但load.started期间无效。

// test/my-test.js
casper.on('url.changed', function() {
  this.evaluate(function() {
    window.testObject = { foo: 'bar' };
  });
});

// my-page.html
<script type="text/javascript">
  if (window.testObject) listenToInterestingEvent();
  fireInterestingEvent();
</script>