最近用到HttpUnit做一个自动提交数据信息的项目, 发现HttpUnit对JS的支持并不太好。特别是当网站很多的数据信息用JS做初始化或控制时,根本就获取不到真实的数据信息并且也设置不了。而且不知道是为什么,也许是出于安全考虑,HttpUnit的WebForm是不能设置其下面的隐藏表单信息的。不过这时候倒是可以通过操作JS去实现,比如有一个隐藏表单名称为:name,默认值为空,如果直接用WebForm.setParameter(name,value),会报一个不能设置值的异常。这时可以用WebForm先得到JS再用JS设置对应值:WebForm.getScriptableObject.doEvent("javascript:document.formname['name'].value=value");这样就不会报错并且值设置正确。
还有一种情况就是,下拉列表,有些网站的下拉列表静态的值是没用的,真正选择的值是由JS后来加载的,我就遇到过这样的问题,WebConversation在获取网页时不知为什么,它得不到加载后的值,只能得到静态的值,我试过刷新也没用。这时需要的值在选择里没有,你想设置正确的值肯定会出错。这时也可以通过JS来实现,但是这时不能像上面一样直接设置值就行了,这样也会报错,提示可选的值没有。可以通过先把可选项其中的一个设置成你需要的值,然后再设置就正确了。比如:SID选项是一个下拉选择列表,它传入的值可能是:123456,但在静态的下拉中并没有,它会由JS后来加载上。这时可以先通过JS设置一个正确值:WebForm.getScriptableObject.doEvent("javascript:document.formname['SID'][0].value=value"),然后再设置正确值:WebForm.getScriptableObject.doEvent("javascript:document.formname['SID'].value=value");这样就可以了。
在操作过程中我遇到过一个问题,就是当我模拟一个操作时,比如按下某个按钮或调用一个JS方法,这样真正页面是会弹出一个窗口,这时我不知道怎么去关闭它。费了很大劲最后也只好走了个弯路去实现,就是不通过这一步而完全模拟它的其它操作。如果有人知道怎样关闭的麻烦告诉小弟下,Thank you ~
分享到:
相关推荐
`HttpUnit`是一个强大的工具,它允许开发者在Java环境中模拟浏览器的行为,包括处理表单、执行JavaScript以及响应HTTP请求。在这个场景下,我们讨论的是如何利用HttpUnit来模拟JavaScript点击事件。 HttpUnit是一个...
找到页面上的表单,设置表单字段的值,然后调用`submit()`方法提交表单。 - 检查返回的`WebResponse`,以验证登录是否成功。可以获取页面内容、状态码、头信息等。 2. **结合`jxl`库读取Excel数据**: - `jxl`库...
2. **js-14.jar, js.jar**: 这两个文件可能都是JavaScript引擎的实现,例如Rhino,这是一个开源的JavaScript引擎,允许在Java环境中执行JavaScript代码。Rhino广泛应用于服务器端脚本、网页应用、数据处理等方面,...
- `HtmlForm`接口提供了设置表单字段值的方法,如`setValueAttribute()`。 - 一旦设置了表单数据,可以通过调用`submit()`方法来模拟用户提交表单,这将触发新的HTTP请求。 6. **断言和测试** - HttpUnit提供了...
2. **js.jar**:这是Rhino JavaScript引擎的实现,它允许HttpUnit执行JavaScript代码,这对于测试网页中涉及JavaScript交互的部分非常重要,因为很多现代网页功能都依赖于JavaScript。 3. **httpunit.jar**:这是...
3. **模拟用户交互**:它可以模拟用户填写表单、点击按钮、处理JavaScript等操作,这对于测试动态网页和AJAX应用非常有用。 4. **异常处理**:HTTPUnit能捕获并处理HTTP错误,例如404 Not Found或500 Internal ...
3. **模拟用户交互**:对于动态网页,HttpUnit能模拟用户与页面的交互,如点击按钮、填写表单等,这对于测试网页应用非常有用。 4. **异常处理**:如果服务器返回错误状态码或网络出现问题,HttpUnit会抛出相应的...
6. **处理表单和提交**:模拟用户填写表单并提交,通过`WebForm`对象操作表单字段,然后调用`submit()`方法。 四、HttpUnit的局限性 尽管HttpUnit在许多方面表现优秀,但它也有一些限制。例如,对CSS的支持有限,...
3. JavaScript支持:虽然HTTPUnit最初设计时并不支持JavaScript,但后来的版本增加了一定程度的JavaScript执行能力,允许测试某些基于JavaScript的页面功能。这部分源代码可能涉及到JavaScript引擎的集成和调用。 4...
HTTPUnit常用于Web应用的单元测试和集成测试,尤其适合于那些没有复杂DOM操作或大量JavaScript交互的页面。它也可以作为开发工具,快速验证服务端接口的正确性,或者在没有浏览器环境的情况下进行测试。 总结,...
在提供的压缩包文件列表中,我们可以看到`httpunit-1.7.jar`,这是HTTPUnit的一个版本。下载后,将其添加到项目的类路径(classpath)中即可开始使用。 **使用示例** 以下是一个简单的使用HTTPUnit进行Web应用测试...
- **DOM操作**:HttpUnit提供了丰富的DOM操作接口,允许开发者方便地从响应中提取数据或验证页面元素的状态。 #### 二、HttpUnit安装与配置 1. **下载与安装**:HttpUnit项目可以在官方网站...
在标题中提到的"Httpunit-1.6.2.zip_Httpunit_httpun_httpunit-1.5.41.zip_httpunit-",这可能是一个包含不同版本的HttpUnit库的压缩包,包括HttpUnit 1.5.41和1.6.2。HttpUnit允许开发者模拟浏览器行为,执行诸如...
在本项目中,我们关注的是一个基于HTTPUnit的Web工程实例,它包含了源码和必要的依赖包,能够处理异步数据加载。这个工程是用Java 1.8或更高版本编译并运行的,旨在帮助开发者理解如何在Web应用程序中进行HTTP请求...
然而,对于那些高度依赖于浏览器特定行为或复杂JavaScript的应用,HTTPUnit可能不如Selenium等工具强大。 总之,HTTPUnit2.21和其关联的HTMLUnit2.21是Java Web测试的重要工具,它们提供了一种简洁的方式来模拟HTTP...
httpunit-1.7.jar下载
httpunit.jar
3. **处理表单参数**:可以通过`setParameter()`方法设置表单字段的值。 ```java request.setParameter("username", "caterpillar"); ``` 4. **解析响应内容**:对于复杂的响应内容,HttpUnit提供了多种方法来...
HttpUnit 是一个Java库,专为Web应用程序设计的集成测试框架。它允许开发者模拟浏览器行为,执行HTTP请求并检查响应结果,从而无需实际浏览器就能测试Web应用的功能。这个压缩包"使用HttpUnit进行集成测试源码.zip_...