我有一个网页,在加载 dom 后,javascript 继续在页面上运行并将元素添加到页面上。在运行完所有 javascript 之后,我会触发一个 jquery 事件 page.loaded,以便页面上在我的所有 javascript 运行后有兴趣做某事的组件可以这样做。
我正在尝试使用 casperjs/phantomjs 自动测试此网页,并且我想仅在触发 jQuery 页面加载事件后检查页面上的元素。我该怎么做呢?
我有一个网页,在加载 dom 后,javascript 继续在页面上运行并将元素添加到页面上。在运行完所有 javascript 之后,我会触发一个 jquery 事件 page.loaded,以便页面上在我的所有 javascript 运行后有兴趣做某事的组件可以这样做。
我正在尝试使用 casperjs/phantomjs 自动测试此网页,并且我想仅在触发 jQuery 页面加载事件后检查页面上的元素。我该怎么做呢?
查看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
});
注意:这是事实伪代码,目的只是为了描绘概念。