3

我正在使用 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 不会显示来自服务器的数据。

例如:当页面加载时,它会调用我在<div class="user"></div>标签中显示的 REST 服务 /auth/users。

所以在我看到的浏览器中,它是这样填充的

<div class = "user">
<div class "userName">User1</div>
<div class "userName">User2</div>
</div>

但是当我在casperjs中为this.getHTML()做一个console.log时,我得到<div class="user"></div>(没有任何用户的空标签)

知道为什么会这样吗?

4

2 回答 2

1

您可能需要等待 url 实际加载到浏览器中:

casper.then(function () {
    this.click('a[href="/ui/thunder/"]')
});

casper.waitFor(function() {
    return /ui\/thunder\/$/.test(this.getCurrentUrl());
}, function () {
    console.log(this.getHTML());
});
于 2013-05-09T15:43:40.843 回答
0

Casperjs 的 webkit 无法呈现我的页面,因为存在一个小的 javascript 绑定错误,firefox/chrome/IE 从未捕获到该错误。我下载了 Konqueror,发现它也无法呈现页面,在解决绑定问题后,我的生活变得更轻松了 casperjs!

于 2013-05-09T23:38:16.687 回答