无法使用casperjs找到现有元素

时间:2013-04-24 19:23:35

标签: jquery phantomjs functional-testing casperjs

我使用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>(没有任何用户的空标签)

知道为什么会这样吗?

2 个答案:

答案 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我的生活变得更加轻松!