HtmlUnit 从 href 调用 javascript 来下载文件

2024-01-07

我尝试下载一个似乎必须通过浏览器单击的文件。该网站使用一个表单,其中包含多个指向名为 downloadFile 的 javascript 函数的 href。在此函数中,通过 document.getElementById 获取名为 poslimit 的元素:

function downloadFile(actionUrl, formId)
{
    document.getElementById(formId).action=actionUrl;
    document.getElementById(formId).submit();
}

HTML 源代码片段:

<form method="post" name="commandForm" action="position-limits" id="poslimit">
    <div id="content">
        <li><a href="javascript:downloadFile('position-limits?fileName=20130711&positionLimit=CURRENT_POSITION_LIMIT_', 'poslimit');" > July 11, 2013 </a></li>

因此,单击 href 中上面的链接代码会调用另一个文件中的 javascript:

我试过了:

WebClient webClient = new WebClient(BrowserVersion.CHROME_16);
HtmlPage page = webClient.getPage("http://www.theocc.com/webapps/position-limits");
HtmlForm elt = page.getHtmlElementById("poslimit");
elt.setAttribute("action", "position-limits?fileName=20130709&positionLimit=POSITIONLIMITCHANGE_");
InputStream is = elt.click().getWebResponse().getContentAsStream();
int b = 0;
while ((b = is.read()) != -1)
{
    System.out.print((char)b);
}
webClient.closeAllWindows();

还尝试使用 HtmlElement 我也尝试过:

WebClient webClient = new WebClient(BrowserVersion.CHROME_16);
HtmlPage page = webClient.getPage("http://www.theocc.com/webapps/position-limits");
ScriptResult sr = page.executeJavaScript("downloadFile('position-limits?fileName=20130709&positionLimit=POSITIONLIMITCHANGE_', 'poslimit'");
InputStream is = sr.getNewPage().getWebResponse().getContentAsStream();
int b = 0;
while ((b = is.read()) != -1)
{
    System.out.print((char)b);
}
webClient.closeAllWindows();

这两个都来自此板上和其他板上的示例,但我继续只取回原始页面而不是附加文件。我还想知道是否需要查看历史记录以获取正确的页面响应,因为我需要的返回窗口/文档可能是上一个。感谢您提供完整解释或良好示例文档以及我可以尝试的来源的礼貌链接。


所以我认为这可能对其他人有帮助,因为我还没有看到有效的例子。

WebClient webClient = new WebClient(BrowserVersion.CHROME_16);
HtmlPage page = webClient.getPage("http://www.theocc.com/webapps/position-limits");
HtmlAnchor anchor = null;
List<HtmlAnchor> anchors = page.getAnchors();
for (int i = 0; i < anchors.size(); ++i)
{
    anchor = anchors.get(i);
    String sAnchor = anchor.asText();
    // This date should come in from args
    if (sAnchor.equals("July 9, 2013"))
        break;
}
// This is not safe, need null check
Page p = anchor.click();
InputStream is = p.getWebResponse().getContentAsStream();
int b = 0;
while ((b = is.read()) != -1)
{
    System.out.print((char)b);
}
webClient.closeAllWindows();

这个问题对我有一点帮助,因为我尝试了锚点并且它起作用了。努力点击 htmlunit 中的链接 https://stackoverflow.com/questions/5244005/struggling-to-click-on-link-within-htmlunit

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HtmlUnit 从 href 调用 javascript 来下载文件 的相关文章

  • 自动调整Google网站嵌入代码的高度(html)

    我正在使用 Google 协作平台嵌入 HTML 代码 将代码粘贴到 从网络嵌入 窗口中 输出的长度是可变的 我希望有一种方法可以动态调整父级的高度iframeGoogle 协作平台用于托管我的 HTML 我知道我可以使用 Google 协
  • 如何在 Firefox 控制台中访问附加内容脚本?

    我为 Firefox 和 Chrome 开发了一个插件 它有内容脚本 我想在浏览器选项卡的控制台中访问它们 在 Firefox 上网页控制台 https developer mozilla org en US docs Tools Web
  • 无法在 JavaScript for 循环中读取 null 的属性“长度”

    我正在尝试制作一个像 Stack Overflow 那样的 Markdown 编辑器 如果我实际上没有在文本区域中键入星号和包含短语的 http 我会收到标题中列出的此错误 如果我只输入包含星号的短语 则错误指的是这一行 if linkif
  • pubnub 和 head.js

    有没有人成功整合过pubnub http www pubnub com 和 head js 正确吗 Pubnub http www pubnub com 希望我将他们的脚本放在页面底部并带有 div 就在它前面的标签 这可以确保在最后调用
  • 定义 js-xlsx 单元格范围

    我正在尝试使用 js xlsx 读取 Excel 值 我可以使用以下代码从工作簿工作表中获取单元格值 if typeof require undefined XLSX require xlsx var workbook XLSX readF
  • 在 javascript、jQuery 或 css 中,如何让 div 或 iframe 展开以填充其余空间

    我有三个 iframe 我将顶部 iframe 设置为 50px 高度 将底部 iframe 设置为 50px 但我希望中间 iframe 扩展以填充其余空间 有没有一种技术可以用来对任何窗口屏幕尺寸执行此操作 谢谢 example
  • 了解 sort() 比较函数

    我正在使用一个电子商务平台 该平台无法重新排序产品属性字段的选项 这真的很糟糕 因为要插入新选项 您几乎必须删除所有现有选项并重新开始 我正在尝试在客户端进行操作 这是我正在处理的内容 这是针对鞋码的 9 EE 9 1 2 EE 10 EE
  • 为什么 length 是 `Array` 的属性而不是 `Array.prototype` 链

    所以我在 V8 控制台上玩了很多 我做到了 Object getOwnPropertyNames 我期望得到 结果 然而 length 所以这意味着不是成为原型链的一部分 length是所有人的成员财产Array对象 这是一个错误 还是有任
  • 启用/禁用由用户输入确定的复选框

    我有一个简单的表单 用户可以在其中输入他的联系号码 如果联系号码以 07 开头 则该复选框已启用 其他我需要禁用它的复选框 我已经编写了一些代码 但我面临的问题是 当用户键入 01 时 它会被禁用 但如果他们继续在 01 之后添加任何其他数
  • 如何更改自动完成中的结果过滤器?

    我不想进行字面匹配 而是想通过正则表达式选择结果 我可以覆盖自动完成的默认行为来完成此任务还是需要替代结构 有一个内置的方法可以做到这一点 只需提供一个函数source http jqueryui com demos autocomplet
  • JavaScript 测验在提出所有问题之前结束

    我现在正在学习 JavaScript 并且正在创建一个测验 我的测验运行正常 控制台中没有任何错误 但它会跳过问题 有时会在回答所有问题之前结束测验 即使给出正确答案 也会减少时间 我不太确定为什么它会这样做 因为在我看来它的编码是正确的
  • 在管道中重用变量的功能方式

    在 javascript 和 typescript 中与 Ramda 一起使用函数式编程 我经常发现自己编写如下代码 const myFun c gt const myId c id const value pipe getAnotherO
  • 在 React Navigation 中将 props 传递给自定义抽屉导航器

    在反应导航抽屉菜单中 我想显示用户名 John Doe 它处于我的主要组件的状态 Router 我怎样才能将自定义抽屉内容组件传递给它 额外信息 我从 AsyncStorage 中获取此名称 组件已挂载 这是我的代码 export defa
  • Google 地图 API:忽略 DirectionService 请求中的季节性限制

    我目前正在开发一张地图 其中显示两点之间的最短路线 使用不同的交通工具 我注意到 有时 例如在冬季关闭的道路不会被考虑在内 我发现我可以使用方向服务 下面的代码 忽略高速公路 收费站和渡轮 但我一生都无法弄清楚如何 是否可以忽略季节性限制
  • 计算文本选择的 xy 位置

    我正在尝试使用 DOM 元素创建自己的文本选择 是的 我的意思是当您在此元素中选择文本时 您会在文本后面看到蓝色背景 这个想法是停止默认行为 蓝色 并使用我自己的元素来完成工作 方法是找到选择的 xy 位置 然后放置绝对定位的元素 我希望能
  • 如何处理requireJs超时错误?

    我正在使用 require js 作为加载框架编写一个移动混合应用程序 我遇到加载错误的问题 我想做的是在设备离线且无法下载在屏幕上显示地图所需的 google 地图 API 脚本时设置后备解决方案 我得到的只是 Uncaught Erro
  • Ember Data 中出现“超出最大调用堆栈大小”错误的原因可能是什么?

    Ember 发布新版本 3 6 0 后 我开始在控制台中收到错误 rsvp js 24 未捕获 RangeError 超出最大调用堆栈大小 在 WeakMap get 在 getCacheFor metal js 25 在 Computed
  • 如何使用 jQuery 或 JavaScript 聚焦 或 标签?

    for var i 0 i
  • 强制输入数字小数位

    我想强制
  • Internet Explorer 9 是否会因数组和对象文字末尾的额外逗号而卡住?

    现代浏览器和 Node js 等环境允许您说 a 1 b 2 或 1 2 3 这在历史上一直是 Internet Explorer 的问题 Internet Explorer 9 中修复了此问题吗 对此有两种不同的答案 一种是对象初始值设定

随机推荐

  • 如何使用 TrueForAll

    我有一个布尔列表 我想检查是否每个列表都设置为 true 我可以运行一个循环并以这种方式检查它 但我想尝试这样做TrueForAll列表的方法 我需要一个谓词 但我找不到这样一个简单任务的明确示例 Use All http msdn mic
  • MDM:服务器 URL 的 ssl 问题

    我想使用Lion Server管理iOS设备 我购买了Lion Server并安装在具有Lion OS 10 7的Mac系统中 我想在我们自己的网络中管理设备 我没有为 MDM 采用特定的域 在 IPCU 中为 MDM 创建 cofig 配
  • 将数组的索引更改为所需的顺序问题

    您好 我有一个索引为 0 13 的数组 其键值为每个索引都有一个自己嵌套的数组 我希望能够将其顺序更改为 0 2 1 3 4 5 7 6 8 10 9 11 13 12 这是我的尝试 但它不起作用 var array 1 array id
  • Qt Windeployqt 导致部署不可用

    我在用着windeployqt可执行文件来准备我的安装树 该工具将所有必需的 甚至一些不必要的 dll 复制到指定文件夹中 并对 Qt5Core dll 进行硬编码路径变量的修补 以下是我执行该工具的方法 C Qt 5 11 2 mingw
  • Aurelia 中的数据绑定父子关系

    代码 我有两节课 export class Shipment shipmentId number widget Widget export class Widget widgetId number name string 然后我有一个Shi
  • SQLite.NET 和 SQL Server Compact 的优缺点

    我已经多次使用 SQLite NET 它总是工作得很好 但我有一个朋友一直纠缠我应该使用 SQL Server Compact 所以我完全留在 Microsoft 环境中 现在 我从未使用过 Compact 他告诉我这对他来说效果很好 但看
  • 使用 root 用户(= 存储桶所有者)在 aws s3 存储桶上设置存储桶策略时访问被拒绝

    我有一个 AWS root 用户 用于在 Amazon 上创建 S3 存储桶 现在我想通过添加以下策略来公开此存储桶 Version 2012 10 17 Statement Effect Allow Principal Action s3
  • ElasticSearch 边缘NGram

    我有以下设置和分析器 put tests settings analysis analyzer standardWithEdgeNGram tokenizer standard filter lowercase edgeNGram toke
  • 如何重新加载使用“from module import *”导入的python模块

    我看到在这个有用的问答 https stackoverflow com q 437589 4518341可以使用的reload whatever module 或者 在 Python 3 中 imp reload whatever modu
  • 使用 ID 获取 AmChart 实例 / AmCharts4 Angular-Typescript 中的所有图表

    之前我们使用 this AmCharts 获取它们 AmCharts为我们提供了AmChartsService 通过它我们可以获取dom中的所有图表 升级后获取页面中所有图表的新方法是什么 None
  • 如何在全日历中设置外部事件的持续时间

    我正在尝试将 fullcalendar 与外部事件一起使用 我按照拖放外部事件的示例进行操作 这正是我所需要的 并且示例很好 我可以拖动外部事件并将其放在日历上 它们被转化为事件 但问题是它们都是 60 分钟长 我想更改这个值 但我找不到如
  • Javascript 获取附加了处理程序的元素

    当在元素上触发 onclick 事件时 如何从事件对象中获取事件附加到的元素 与单击的 target 元素相对 您可以访问currentTarget财产 https developer mozilla org en US docs Web
  • 如何使用纯 Javascript 删除父元素

    如何使用纯 JavaScript 删除父元素和所有相应节点 我没有使用 jQuery 或任何其他库 换句话说 我有一个元素 当用户单击它时 我想删除父元素的父元素 以及相应的子节点 table tr td Mohit td td 23 td
  • 如何在Windows中正确构建opencv以获得“opencv_createsamples.exe”

    我想学习和使用 haarcascade 分类器 使用 OpenCV 来检测我选择的对象 我在网上搜索发现createsamples实用程序有助于创建正像和负像图像的数据集 我知道如何在 python 中安装 OpenCV pip insta
  • 将 firebase 添加到代号一

    我正在使用 Codename One 框架开发我的应用程序 并使用 Firebase 将我的数据存储在云中 为了利用 Firebase 的所有潜力 我想将其添加到我的应用程序中 但由于我没有使用 Android Studio 或 Xcode
  • Terraform (0.12.29) 导入未按预期工作;导入成功,但计划显示销毁并重新创建

    一些背景 我们有 terraform 代码来创建各种 AWS 资源 其中一些资源是根据 AWS 账户创建的 因此被构造为存储在account scope我们项目中的文件夹 当时我们只有一个 AWS 区域 现在我们的应用程序是多区域的 因此将
  • 将 Subsonic.Select() ExecuteTypedList 方法与字符串结合使用

    这更多是关于泛型而不是亚音速的问题 想象一下如果有以下代码 List
  • Java 中的 IDisposable 隐喻?

    作为一名进入 NET 的 Java 开发人员 我想了解 IDisposable 接口 有人可以尝试解释一下这一点以及它与 Java 中发生的情况有何不同吗 谢谢 我写了一个关于 IDisposable 的详细系列文章 http reedco
  • Amazon Lex 在 Lambda Fulfillment 上 30 秒超时

    我有一个 lambda 函数 它通过网络服务与一些外部自动化绑定 完成任务大约需要 45 秒 我已经将 lambda 调用的时间限制更新为 2 分钟 并且当我测试时它工作正常 但是 当我在 Amazon Lex 中使用文本机器人时 我收到以
  • HtmlUnit 从 href 调用 javascript 来下载文件

    我尝试下载一个似乎必须通过浏览器单击的文件 该网站使用一个表单 其中包含多个指向名为 downloadFile 的 javascript 函数的 href 在此函数中 通过 document getElementById 获取名为 posl