CasperJS中的waitForPopup总是得到“等待超时”

时间:2015-04-18 07:59:50

标签: casperjs

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

但是因为等待超时20000ms到期而失败了。我也尝试将urlstring作为参数:

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

仍然超时。我还捕获了屏幕截图,显然它仍然在上一页。我尝试直接输入url的thenOpen方法。有用。但是因为我想要自动它,在实际触发链接之前我无法知道url。我是CasperJS的新手,有谁知道如何解决这个问题?感谢。

1 个答案:

答案 0 :(得分:1)

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

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