shano 发表于 2010-9-19 22:43:41

表单提交之IE带验证的问题(已解决)

本帖最后由 shano 于 2010-9-23 02:20 编辑

一表单填写一项后会自动检测合法性,但是AUTOIT填表却不能激活检测,点击提交会提示某一项无效,目前我的方法是AUTOIT提交一次焦点会选在其中一项 然后发送一个TAB离开焦点就会激活检测,连续发送6次。。汉       感觉这个方法好傻,而且发送的是TAB会影响操作 不知道各位大侠们有没有其他高招,附上我的代码
www.king.com/signup.jsp目标网址

$oIE1 = _IECreate ("http://www.king.com/signup.jsp",0,1,0,1)
sleep(20000)
$form = _IEFormGetObjByName($oIE1, "frmSignup");获取表单对象
TrayTip("提示","获取表单对象",10)

$oQuery = _IEFormElementGetObjByName ($Form, "username")   
_IEFormElementSetValue ($oQuery,"fdsaklfjk3",0 )   
$oQuery = _IEFormElementGetObjByName ($Form, "password")   
_IEFormElementSetValue ($oQuery, 234234,1)   
$oQuery = _IEFormElementGetObjByName ($Form, "email")   
_IEFormElementSetValue ($oQuery, "fdsaklfjkl123@fdsfds.com",1)   
$birthYear=Random(8,28,1)
$oQuery = _IEFormElementGetObjByName ($Form, "birthYear")
_IEFormElementOptionSelect ($oQuery , $birthYear, 1, "byIndex")
$birthMonth=Random(1,11,1)
$oQuery = _IEFormElementGetObjByName ($Form, "birthMonth")
_IEFormElementOptionSelect ($oQuery , $birthMonth, 1, "byIndex")
$birthDateDay=Random(1,30,1)
$oQuery = _IEFormElementGetObjByName ($Form, "birthDateDay")
_IEFormElementOptionSelect ($oQuery ,$birthDateDay, 1, "byIndex")
_IEFormElementRadioSelect ($Form, "2","gender", 1, "byValue")
TrayTip("提示","表单填写完毕",15)
Sleep(1000)
$oSubmit=_IEGetObjById($Form,"submit")
$oSubmit.click
send("{tab}")
TrayTip("提示","第1次点击",15)
sleep(4000)
$oSubmit=_IEGetObjById($Form,"submit")
$oSubmit.click
send("{tab}")
TrayTip("提示","第3次点击",15)
sleep(4000)
$oSubmit=_IEGetObjById($Form,"submit")
$oSubmit.click
send("{tab}")
TrayTip("提示","第3次点击",15)
sleep(4000)
$oSubmit=_IEGetObjById($Form,"submit")
$oSubmit.click
send("{tab}")
TrayTip("提示","第4次点击",15)
sleep(4000)
$oSubmit=_IEGetObjById($Form,"submit")
$oSubmit.click
send("{tab}")
TrayTip("提示","第5次点击",15)
sleep(4000)
$oSubmit=_IEGetObjById($Form,"submit")
$oSubmit.click
send("{tab}")
TrayTip("提示","第6次点击",15)
sleep(4000)

shano 发表于 2010-9-21 15:49:49

没人知道吗

bob 发表于 2010-9-22 00:56:53

网站我这打不开
有个函数可获取焦点,可尝试下
.focus

shano 发表于 2010-9-23 02:20:05

哈哈这个网站确实有点慢
我有了新的方法就是通过API后台发送TAB 这样就不会影响到其他工作
贴关键部分的代码

$oSubmit=_IEGetObjById($Form,"submit")
$oSubmit.click
sleep(2000)                ;提交一次 让光标停留在出错行
$cv=_WinAPI_PostMessage($oIE1,0x0100,9, 0) ;发送第一次TAB
$cv=_WinAPI_PostMessage($oIE1,0x0100,9, 1) ;发送第二次TAB
$cv=_WinAPI_PostMessage($oIE1,0x0100,9, 2)
$cv=_WinAPI_PostMessage($oIE1,0x0100,9, 3)
。。。。。。。。。。。。。。。。。。。。。。。。。
所有表单都验证后就可以再提提交
页: [1]
查看完整版本: 表单提交之IE带验证的问题(已解决)