使用HtmlUnit模拟浏览器操作时,我们有时候要做一些上传文件操作。这就要利用HtmlFileInput这个类了。
WebClient client = new WebClient(); HtmlPage page = client.getPage("http://login.baidu.com/");
通过page获得HtmlForm,再通过HtmlForm获得HtmlFileInput
HtmlForm form = page.getFormByName("form"); HtmlFileInput fileInput = form.getInputByName("fileInput");
通过设置valueAttribute来确定上传哪个文件
fileInput.setValueAttribute("D:\\111.jpg");
最后按下提交按钮提交
HtmlElement submitBtn = page.getElementByName("submit"); submitBtn.click();
这样就完成了一次上传文件的过程。
如果在获取HtmlForm时,发现form表单没有name属性,也可以通过
HtmlForm form = page.getForms().get(0);
来获得表单。
最后推荐一个学习网站,比较适合新手:Here
相关推荐
这个库在进行HTTP请求时,尤其是上传或下载带有复杂内容类型的数据(如图片、文件等)时非常有用。它是HTMLUnit进行网络通信时的一个关键依赖,因为HTMLUnit可能需要发送或接收HTTP请求来加载和操作网页。 使用...
5. **httpmime-x.x.x.jar**:这个库扩展了HttpClient,使得能够发送和接收带有MIME类型的HTTP请求,例如上传文件或处理多部分表单数据。 6. **commons-codec-x.x.jar, commons-logging-x.x.x.jar**:这两个是Apache...
`CommonsFileUpload`库通常与Struts2一起使用,处理文件上传。下载可以通过设置响应头信息和流化文件内容来实现。 - **上传**: 用户通过表单提交文件,Struts2接收并存储在服务器上。 - **下载**: 服务器读取文件...
使用框架 描述 框架 核心框架 htmlunit、jsoup、okhttp、tessract4.0 日志框架 log4j 主要特色 简约 / 极易上手 安装教程 导入eclipse 或者 idea 配置user.ini文件信息 用户名 密码 运行App - 不懂运行,下载完可以...
HttpClient的应用非常广泛,包括Apache的Cactus和HTMLUnit等知名项目都在使用。它的活跃度很高,社区支持丰富,不断更新以满足开发者的需求。在文章中提到的例子中,HttpClient版本为3.0 RC4,但请注意,随着时间的...
除了基本的GET方法,HttpClient还支持POST方法,可以发送表单数据或上传文件。POST方法的实现需要创建`PostMethod`对象,使用`setRequestBody`或`setParameters`方法设置参数,然后同样通过`executeMethod`执行请求...
- **上传文件**:使用 `sendKeys()` 将文件路径传入隐藏的文件选择输入框。 - **Windows 和 Frames 之间的切换**:使用 `switchTo().window()` 或 `switchTo().frame()` 切换窗口和框架。 - **拖拉(Drag and Drop...
- **文件上传/下载**:实现文件通过HTTP协议的上传和下载功能。 - **身份验证**:处理基于HTTP的身份验证机制。 #### 四、示例代码分析 下面是一个简单的示例代码,用于演示如何使用HttpClient获取网页内容: ```...
上传文件通常是通过模拟文件选择器来实现,可以使用`sendKeys`方法来发送文件路径。 **3.2.10 Windows 和 Frames之间的切换** 在处理嵌套框架或者多个窗口时,需要使用`switchTo.frame()`或`switchTo.window()`来...
11. **Imprimatur**:通过XML文件定义测试,支持HTTP会话和文件上传,结果验证使用正则表达式,提高了测试的灵活性。 12. **Tagit**:专门用于单元测试JSP自定义标签的模拟对象框架,使离线测试成为可能。 13. **...
用户可以输入包含HTML表格的URL或上传HTML文件,然后程序会自动识别表格结构,并提供选项来选择要提取的数据列。 安全数据处理是HTMLParser的另一个关键特性。这意味着在将数据导入MySQL之前,程序可能已经进行了...