Javascript 如何在每次url使用CasperJS更改时获取页面标题
我已经查看了CasperJS文档,似乎没有任何事件允许我在出现导航时访问当前文档。那么,是否有可能在每次有导航时获取页面的新标题?会在加载另一个URL后立即发出,这通常意味着标题也已更改。它似乎不会在页面加载结束时发出,因此您还需要添加一个步骤,让CasperJS等待页面加载Javascript 如何在每次url使用CasperJS更改时获取页面标题,javascript,events,phantomjs,casperjs,Javascript,Events,Phantomjs,Casperjs,我已经查看了CasperJS文档,似乎没有任何事件允许我在出现导航时访问当前文档。那么,是否有可能在每次有导航时获取页面的新标题?会在加载另一个URL后立即发出,这通常意味着标题也已更改。它似乎不会在页面加载结束时发出,因此您还需要添加一个步骤,让CasperJS等待页面加载 casper.on("url.changed", function(){ this.then(function(){ this.echo(this.getTitle()); }); });
casper.on("url.changed", function(){
this.then(function(){
this.echo(this.getTitle());
});
});
您可以以完全相同的方式使用事件。这里有一个比公认答案稍微快一点的版本,如果您正在处理许多URL更改,它将产生重大影响:
casper.on('url.changed', function () {
this.then(function () {
console.log(this.page.title);
});
});
请解释为什么该活动不能解决您的问题。你说的是单页应用程序吗?据我所知,“navigation.requested”是在导航完成之前显示的,因此我无法访问导航页面标题。例如,此代码无效:。它将只输出“导航发生”。
casper.on(“url.changed”,function(){this.echo(“导航发生”);this.echo(this.getTitle();})代码>当我使用此代码时,我得到的唯一输出是“Navigation Occessed”(导航发生)。结果证明文档具有误导性。我自己尝试过并修复了代码。以这个php文件为例:。它的原始标题是“aaa”,它在一秒钟后导航到一个标题为“bbb”的新页面。当我试图用“url.changed”、“navigation.request”或“resource.received”来处理这个问题时,我只得到第一个标题(“aaa”),而不是第二个标题(“bbb”)。好吧,页面本身会进行重定向。你在CasperJS中等待重定向吗?如果脚本完成,CasperJS将退出。如果您知道时间,只需执行静态casper.wait(1000)
,但这是另一个问题。