下载使用CasperJS在新选项卡中打开的PDF

时间:2016-12-02 19:49:04

标签: phantomjs casperjs

我正在尝试编写一个可以导航和下载PDF的casperJS程序。如果我可以获取与PDF相对应的实际URL,那么它非常简单,但情况并非总是如此。为了测试这个,我一直在本地使用这个简单的例子:

<html>
  <head>
  </head>
  <body>
    <h1 class="page-title">Hello</h1>
    <a id='1' href="test.pdf" target="_blank">one</a>
  </body>
</html>

基本的casper:

casper.start('file:///opt/templates/templates/src/main/resources/casperjs/example.html').then(function() {
  this.echo('started')
});

casper.then(function() {
  this.waitForSelector('a', function() {
    this.click('a');
  });
});

casper.wait(1000, function() {
  this.echo(JSON.stringify(this.popups[0]));
});

casper.run();

当我运行它时,(唯一)弹出窗口是一个永不加载的空白HTML页面。值得注意的是,如果您在没有'target =“_ blank”'的情况下进行测试(即PDF在同一个标​​签页中打开),则会发出'resource.received'事件(使用null内容类型),但加载资源会失败:

[warning] [phantom] Loading resource failed with status=fail: file:///opt/templates/templates/src/main/resources/casperjs/test.pdf

有没有什么好方法可以处理以某种通用方式打开/下载PDF的链接?你可以挂钩'navigation.requested'并在那里下载,但我认为没有一种很好的方法来确定导航是用于PDF(URL可能并不总是有文件扩展名)。

0 个答案:

没有答案