使用casperjs处理jquery事件

Moi*_*aja 3 javascript phantomjs casperjs

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

我试图使用casperjs/phantomjs自动测试这个网页,我想在jQuery页面加载事件被触发后才检查页面上的元素.我应该怎么做呢?

NiK*_*iKo 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
});
Run Code Online (Sandbox Code Playgroud)

注意:这是factice伪代码,目的只是为了描绘概念.