HttpUnit操作JS设置提交FORM的隐藏域或下拉列表值

最近用到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 ~

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值