使用 CasperJS 提交表单和下载文件
Submitting a form and downloading a file using CasperJS
请注意,我已经看过这些链接:
CasperJS and downloading a file via iFrame and JavaScript
Submitting a form with casperjs
我认为它们非常适合我想要实现的目标,但我的努力没有结果。
我正在尝试通过 https://www.youtube2mp3.cc/#conversion 将 mp3 下载到我的文件系统,并且我一直在尝试通过 CasperJS 无头地完成此操作。
这是我的代码:
var casper = require('casper').create({verbose: true , logLevel: "debug" });
var fs = require('fs');
casper.start('http://www.video2mp3.de/');
casper.waitForSelector("#converter > form");
casper.fill('#converter > form', { video: 'https://www.youtube.com/watch?v=VoaUYcwEpSw' }, true);
casper.waitForSelector("#file");
var url = casper.getElementAttribute('#file','href');
var mp3 = fs.absolute("unstoppable.mp3");
casper.then(function() { this.download(url, mp3); });
casper.run();
我想我有点天真地认为它会这么简单,但我找不到我的错误。调试器不是很有帮助。我已经 运行 我的文件在我的终端中使用以下命令:
casperjs --web-security=no sample.js
如有任何帮助,我们将不胜感激。
答案:
我设法通过使用屏幕捕获来调试我的代码来让它工作。如果有人感兴趣,这是最终结果:
var casper = require('casper').create({verbose: true , logLevel: "debug" });
var fs = require('fs');
var url = "https://www.youtube2mp3.cc/"
casper.start(url);
casper.then(function(){
this.fill('#converter > form', { 'video': 'https://www.youtube.com/watch?v=VoaUYcwEpSw' }, true);
});
casper.wait(2000);//this is probably what I was missing,
//a screen capture showed that I wasn't waiting long enough
casper.then(function(){
this.waitForSelector("#file", function(){
var url = casper.getElementAttribute('#file','href');
var mp3 = fs.absolute("unstoppable.mp3");
casper.then(function() { this.download( url, mp3); });
});
});
casper.run();
下载的文件将在脚本所在的位置。
我正在使用:
- CasperJS 1.1.2
- PhantomJS 2.1.1
运行 MacOSX El Capitan 10.11.6 (15G1108)
请注意,我已经看过这些链接:
CasperJS and downloading a file via iFrame and JavaScript
Submitting a form with casperjs
我认为它们非常适合我想要实现的目标,但我的努力没有结果。
我正在尝试通过 https://www.youtube2mp3.cc/#conversion 将 mp3 下载到我的文件系统,并且我一直在尝试通过 CasperJS 无头地完成此操作。
这是我的代码:
var casper = require('casper').create({verbose: true , logLevel: "debug" });
var fs = require('fs');
casper.start('http://www.video2mp3.de/');
casper.waitForSelector("#converter > form");
casper.fill('#converter > form', { video: 'https://www.youtube.com/watch?v=VoaUYcwEpSw' }, true);
casper.waitForSelector("#file");
var url = casper.getElementAttribute('#file','href');
var mp3 = fs.absolute("unstoppable.mp3");
casper.then(function() { this.download(url, mp3); });
casper.run();
我想我有点天真地认为它会这么简单,但我找不到我的错误。调试器不是很有帮助。我已经 运行 我的文件在我的终端中使用以下命令:
casperjs --web-security=no sample.js
如有任何帮助,我们将不胜感激。
答案:
我设法通过使用屏幕捕获来调试我的代码来让它工作。如果有人感兴趣,这是最终结果:
var casper = require('casper').create({verbose: true , logLevel: "debug" });
var fs = require('fs');
var url = "https://www.youtube2mp3.cc/"
casper.start(url);
casper.then(function(){
this.fill('#converter > form', { 'video': 'https://www.youtube.com/watch?v=VoaUYcwEpSw' }, true);
});
casper.wait(2000);//this is probably what I was missing,
//a screen capture showed that I wasn't waiting long enough
casper.then(function(){
this.waitForSelector("#file", function(){
var url = casper.getElementAttribute('#file','href');
var mp3 = fs.absolute("unstoppable.mp3");
casper.then(function() { this.download( url, mp3); });
});
});
casper.run();
下载的文件将在脚本所在的位置。 我正在使用:
- CasperJS 1.1.2
- PhantomJS 2.1.1
运行 MacOSX El Capitan 10.11.6 (15G1108)