【问题标题】:How to download files in bulk from browser console using JavaScript?如何使用 JavaScript 从浏览器控制台批量下载文件?
【发布时间】:2015-07-07 11:22:26
【问题描述】:

我没有网络编程经验,所以我的问题很简单。我想通过在网页中填写表格来下载很多文件。网页的扩展名是.aspx,我只对一个字段和一个按钮感兴趣。通过在我的浏览器中玩弄控制台,我发现执行:

document.getElementById('TxtRegNo').value = 'blahblah`;

将填写相关字段。也在做一个

__doPostBack("ImageButton1","Click");

将下载对应于blahblah.pdf 文件。需要输入的实际值是一个类似 PAG-1200 到 PAG-1900 的序列。我尝试使用 for 循环,如下所示:

for (var i = 21618; i < 21621; i++) 
{
document.getElementById('TxtRegNo').value = 'B14-' + i;
__doPostBack("ImageButton1","Click");
}

但它没有按预期工作。只有最后一个文档被下载,我在控制台中得到这个:

我以为在 FireFox 的控制台中运行时不会出现此错误,但我仍然只能运行一个文件。谁能告诉我该怎么做?

【问题讨论】:

  • 我尝试在doPostBack 之后添加刷新,但页面在下载开始前刷新。

标签: javascript download console automation


【解决方案1】:

试试这个:

  1. 通过控制台将 jQuery 注入页面,如下所述:Include jQuery in the JavaScript Console
  2. 在您的 for 循环中克隆表单,根据需要设置值并提交表单jQuery('form').clone().find('#TxtRegNo').val('blah').parent('form').submit();

如果页面包含多个表单,您应该指定它。 'form' 在这里像 CSS 选择器一样工作。这将找到页面上的所有表单。如有必要,只需使用'#elementId''.elementsClassName' 更具体。

也许您还需要更改表单的名称(以便能够模拟提交表单)。我没试过,这只是猜测。

如果你想将代码分成几行,你也可以这样做:

var myFormClone = jQuery('form').clone();
myFormClone.find('#TxtRegNo').val('blah');
myFormClone.attr('name', 'uniquename_' + iterationVariableOfForLoop);
myFormClone.submit();

如果提交失败,请尝试:

myFormClone.get(0).submit();

祝你好运!

【讨论】:

  • 当我输入var jq = document.createElement('script'); 时,它会显示undefined
  • 我觉得这很正常,因为这行代码没有返回任何东西。它将创建的脚本分配给变量。先做一个jQuery() 控制台,你会得到未定义的。然后执行其他答案的所有行并重试:)
  • 我应该按原样执行其他答案中的所有行吗?
  • 是的!但是最后一个(jQuery.noConflict())需要稍微延迟。因为需要先加载jQuery。但是 jQuery 的全部魔力是可用的 :) 如果页面不包含使用 $ 的其他 JavaScript 框架,则冲突模式是不必要的。
  • 这是我得到的,没有下载,picresize.com/popup.html?images/…
猜你喜欢
  • 2020-07-08
  • 2018-01-31
  • 2019-01-25
  • 2013-07-14
  • 1970-01-01
  • 2011-06-30
  • 2013-10-14
  • 1970-01-01
  • 2022-11-21
相关资源
最近更新 更多