我使用casperjs作为我的应用程序的测试工具。我在这里遇到一个奇怪的问题。
casper.then(function () {
this.click('a[href="/ui/thunder/"]')
})
casper.then(function () {
this.test.assertUrlMatch(/ui\/thunder\/$/, 'Redirected to cloud page');
console.log(this.getHTML());
});
在编写这段代码时,我被重定向到ui / thunder页面,并在控制台上登录this.getHTML(),它向我显示了页面的完整html,但仍然缺少一些信息。
当页面加载时,它会执行几次REST api调用,并且数据会加载到屏幕上,但是casperjs不会显示来自服务器的数据。
例如:当页面加载时,它会调用REST服务/ auth / users,我将其显示在<div class="user"></div>
标记中。
所以在我看到的浏览器中,它就像这样填充
<div class = "user">
<div class "userName">User1</div>
<div class "userName">User2</div>
</div>
但是当我在casperjs中为this.getHTML()做一个console.log时,我得到了<div class="user"></div>
(没有任何用户的空标签)
知道为什么会这样吗?
答案 0 :(得分:1)
您可能希望等待在浏览器中实际加载网址:
casper.then(function () {
this.click('a[href="/ui/thunder/"]')
});
casper.waitFor(function() {
return /ui\/thunder\/$/.test(this.getCurrentUrl());
}, function () {
console.log(this.getHTML());
});
答案 1 :(得分:0)
Casperjs的webkit未能呈现我的页面,因为有一个小的javascript绑定错误,它从未被firefox / chrome / IE捕获。我下载了Konqueror并发现它也没有呈现页面,并且在修复绑定问题时,使用casperjs我的生活变得更加轻松!