如何编写可以侦听页面加载时触发的事件的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>
答案 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>