3

我有一个网页,在加载 dom 后,javascript 继续在页面上运行并将元素添加到页面上。在运行完所有 javascript 之后,我会触发一个 jquery 事件 page.loaded,以便页面上在我的所有 javascript 运行后有兴趣做某事的组件可以这样做。

我正在尝试使用 casperjs/phantomjs 自动测试此网页,并且我想仅在触发 jQuery 页面加载事件后检查页面上的元素。我该怎么做呢?

4

1 回答 1

7

查看waitFor系列函数,以便在页面环境中等待某些事情发生。您可以等待某些元素文本在 DOM 中可用,或者直接添加特定的 jQuery 侦听器以处理进一步的步骤:

casper.start('test.html', function() {
    this.evaluate(function() {
        $(document).on('site:loaded', function() {
            window.siteLoaded = true;
        });
    });
});

casper.waitFor(function() {
    return this.evaluate(function() {
        return window.siteLoaded === true;
    });
});

casper.then(function() {
    // process further
});

注意:这是事实伪代码,目的只是为了描绘概念。

于 2012-11-20T07:38:07.380 回答