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

时间:2018-05-18 16:38:47

标签: casperjs apex

我试图从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使用不同的会话吗? 下载前后的屏幕截图显示我已登录。

1 个答案:

答案 0 :(得分:0)

问题是这个顶点应用程序在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();