在页面自动化脚本中,当我单击标签链接时,将打开一个新窗口。链接的网址是由复杂的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);

但是由于等待超时20000ms过期而失败。我也尝试将urlstring作为参数:
casper.waitForPopup(/oa.phicomm.com\/workflow\/doJob\.action\?taskVo\.processExecutionId=2c913f9e49d0d5280149d12fabd90dd0&taskVo\.taskId=9100818/, function{
    this.echo(this.getTitle());
});

仍然超时。我还捕获了屏幕截图,显然它仍在上一页中。我尝试了直接输入网址的thenOpen方法。有用。但是由于我要自动执行此操作,因此在实际触发链接之前我无法知道该网址。我是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的更多信息

10-07 23:44