CasperJS 中的 waitForPopup 总是得到 "wait timeout"

waitForPopup in CasperJS always gets "wait timeout"

在我的页面自动化脚本中,当我单击标签 link 时,将打开一个新的 window。 link的url是由复杂的javascript生成的。

<a class="link_text" href="#" onclick="process('2c913f9e4c7314e1014c74a4a5e02573')">办理任务 </a>

触发后 url 变为: https://oa.phicomm.com/workflow/doJob.action?taskVo.processExecutionId=2c913f9e49d0d5280149d12fabd90dd0&taskVo.taskId=10851011

我尝试在单击操作后使用 API- casper.waitForPopup。

casper.waitForPopup(/.+/, function(){
    this.echo(this.getTitle());
}, null, 20000);

但由于等待超时 20000 毫秒已过期而失败。我还尝试将 url 字符串作为参数:

casper.waitForPopup(/oa.phicomm.com\/workflow\/doJob\.action\?taskVo\.processExecutionId=2c913f9e49d0d5280149d12fabd90dd0&taskVo\.taskId=9100818/, function{
    this.echo(this.getTitle());
});

仍然超时。我也截图了,很明显还在上一页。我尝试直接输入 url 的 thenOpen 方法。有用。但是因为我想自动执行它,所以在我实际触发 link 之前我无法知道 url。我是 CasperJS 的新手,有人知道如何解决这个问题吗?谢谢。

我也遇到了同样的问题,我已经通过第一个选择器是否存在解决了这个问题

casper.[waitForSelector][1]('#example_id', function() {
    this.echo("yes");

});

如果您的选择器存在,那么试试这个

casper.[waitForPopup][1](0, function() {
    this.echo('Popup');
});
casper.withPopup(0, function() {
    this.capture('screen.png');
});  

阅读更多关于 waitForPopup