casperjs 无法从 APEX 应用程序下载 CSV

casperjs unable to download CSV from APEX application

我正在尝试从 APEX 应用程序自动下载 CSV 文件。

var casper = require('casper').create({verbose: true, logLevel: "debug", viewportSize: { width: 1600, height: 400 } });
var url = "https://example.com"
casper.start(url);

casper.then(function () {
this.fill('#wwvFlowForm', {'P101_USERNAME': 'user', 'P101_PASSWORD': 'password'}, false);
});

casper.then(function () {
   this.click('#P101_LOGIN');
}).wait(5000).then(function () {
   this.echo('downloading file');
   this.download('https://example/apex/f?p=1002:173:10072525691961:CSV','report.csv')
});

casper.run();

我可以登录,但是当我尝试下载文件时出现登录页面 html。 我尝试使用 getBase64 方法得到相同的结果。 casper.download 使用不同的会话吗? 下载前后截图显示我已登录

问题是此 apex 应用程序在 url 中使用 instance_id,因此工作代码是:

var casper = require('casper').create({verbose: true, logLevel: "debug", 
viewportSize: { width: 1600, height: 400 } });
var url = "https://example.com"
casper.start(url);

casper.then(function () {
this.fill('#wwvFlowForm', {'P101_USERNAME': 'user', 'P101_PASSWORD': 'password'}, false);
});
casper.then(function () {
    this.click('#P101_LOGIN');
}).wait(5000).then(function () {
   this.echo('downloading file');
   var instance_id = this.getCurrentUrl().split(':')[3];
   var download_url = url + '/apex/f?p=1002:173:' + instance_id;
   this.download('download_url' + ':CSV','report.csv')
});

casper.run();