java - 使用 htmlunit 下载 javascript 按钮后面的文件

标签 java download attachment htmlunit

我正在尝试使用 HtmlUnit 下载 javascript 按钮后面的附件。执行其他任务效果很好(例如导航、登录)。 我检查了附件单元测试,但它对我没有帮助。

final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_24);
final HtmlPage page1 = webClient.getPage( loginUrl );
final HtmlTextInput textField =  page1.getElementByName(user);
final HtmlPasswordInput pwd =  page1.getElementByName(pwd);  
textField.setValueAttribute(User.getUsername());
pwd.setValueAttribute(User.getPassword());   

final HtmlSubmitInput button =  page1.getElementByName(login);
final HtmlPage page2 =  button.click();

String buttonJavaScript = "window.location='"+folder+filename + ....... ";
ScriptResult result = page2.executeJavaScript(buttonJavaScript);
webClient.waitForBackgroundJavaScript(2000);    

InputStream is = result.getNewPage().getWebResponse().getContentAsStream();
try {
    File f = new File("filename.extension");
    OutputStream os = new FileOutputStream(f);
    byte[] bytes = new byte[1024];
    while (read == is.read(bytes)) {
        os.write(bytes, 0, read);
    }
    os.close();
    is.close();
} catch (IOException ex) {
    // Exception handling
}

但是,它停止于:

runtimeError: message=[No node attached to this object] sourceName=[http://pagead2.googlesyndication.com/pagead/osd.js] line=[7] lineSource=[null] lineOffset=[0]

创建的文件大小为 0。 一定有办法获取附加的真实文件吗?!

提前谢谢

最佳答案

以防万一其他人想知道:您需要使用 AttachmentHandler。

            ScriptResult result = page2.executeJavaScript(buttonJavaScript);
            webClient.waitForBackgroundJavaScript(1000);

            if( attachments.size() > 0 )
            {
                Attachment attachment = attachments.get(0);

                Page attachedPage = attachment.getPage();
                WebResponse attachmentResponse = attachedPage.getWebResponse();

                String content = attachmentResponse.getContentAsString();

                ... write(content); 
            }

关于java - 使用 htmlunit 下载 javascript 按钮后面的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25094637/

相关文章:

java - 使用 JDK 1.8,无法扩展 WToolkit 类

java - Oracle 是 Java 中 BINARY_INTEGER 类型的 NUMBER(5) 索引表吗?

c# - 如何使用 C# 以编程方式下载 GitHub 数据

iOS:发送带附件的电子邮件会自动添加另一个附加 (.txt) 文件

Java Mail API 发送带有另一封邮件的邮件

java - 无法启动 Activity Resources$NotFoundException

java - 实现一个目标,两种目的

node.js - 从移动设备下载时,Express 在发送后无法设置 header

facebook - 跟踪谁从我的自定义 Facebook 选项卡下载了 PDF

c# - 在 XML 文件中包含二进制数据