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



我想下载一个javascript按钮后面的附件与HtmlUnit。执行其他任务效果很好(例如:导航,登录)。我检查了附件单元测试,但它没有帮助我。

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); 
            }

相关内容

  • 没有找到相关文章

最新更新