[已解决]执行ie批量注销用户,注销600人,但总是注销到40多人是报错
本帖最后由 mycooled 于 2020-5-15 13:07 编辑执行ie批量注销用户,注销600人,但总是注销到40多人是报错,有时候也会注销60多人时报错,_IEGetObjByName,_IEGetObjById,_IETableGetCollection都可能出错,请教如何解决。我看有人说用if @error,_IEPropertyGet($oIE,"busy"),但我看busy得到的都是false,@error判断不知道如何操作
你用ie操作600个页面 就算成功了后面的操作占用的内存也会十分惊人.效率很低.
http是无状态的直接清理掉本地cookie呢 或者用http协议 我不是操作600个页面,是在同一个注销页面中提交600次
$tTxtRowVal = FileReadLine($oExcel)
getOutWorkTxtVal($tTxtRowVal,@TAB,$oAgentCode,$oAgentName,$oIDNo)
While $oAgentCode<>""
_IELoadWait($oIE)
Sleep(2000)
ConsoleWrite("RowNum = " & $oRowNum & " AgentCode = " & $oAgentCode & "IDNo = " & $oIDNo & @crlf )
$oID= _IEGetObjByName($oIE, "ID")
_IEFormElementSetValue($oID, $oIDNo)
$oName= _IEGetObjByName($oIE, "NAME")
_IEFormElementSetValue($oName, $oAgentName)
$oIsValid= _IEGetObjByName($oIE, "ISVALID")
_IEFormElementSetValue($oIsValid, "0")
$oSearch = _IEGetObjById ($oIE, "searchbutton")
_IEAction ($oSearch, "click")
_IELoadWait($oIE)
;$tBusy = _IEPropertyGet($oIE,"busy")
;ConsoleWrite("selectbutton busy = " & $tBusy & @crlf)
;$table = _IETableGetCollection ($oIE,0)
$table= _IEGetObjById($oIE, "querytable" )
Sleep(1000) 我怀疑是不是网页中的对象还没有装载成功,就已经被访问了,所以出现byid,byname出错。但我不知道怎么解决这个问题,看大神们有没有处理过相似的问题,我觉得总是加延迟sleep可能不是正解,因为毕竟网速什么的,是动态变化的,我这个要求比较急,看大神们能否给个建议 ie操作初学者的。。。个人感觉。。。
1.网页注销界面是否有一些限制,防持续大量的注销?
2.操作代码上,既然是同一个注销界面,楼主怀疑装载方面出错,那试试在循环注销之前,获取需要注销的几个值,避免反复的使用iegetobject........后面在循环注销600次的过程中,直接setvalue。。。。看看会不会有改善。。。。
感谢楼上的,我是刚学了2周autoit,所以感觉还欠缺很多,我按照你所说,把getbyid,getbyname放在循环之前,基本上没问题了,多谢多谢
页:
[1]