我正在使用
AutoIt自动填写网站上的表格.
但我在从网站获取表单名称时遇到问题.我查看HTML的来源并查找表单及其名称,但我仍然收到IEStatus_noMatch错误.
对于对象,我可能会遇到同样的问题.
$sUrl = "https://www.acgme.org/residentdatacollection/login.asp" $oIE = _IEAttach($sUrl,"url") If not isObj($oIE) Then $oIE = _IECreate() _IENavigate($oIE,$sUrl) EndIf ; Get pointers to the login form and username and password fields $o_form = _IEFormGetObjByName($oIE,"loginentry") $o_login = _IEFormElementGetObjByName($o_form,"USERID") $o_password = _IEFormElementGetObjByName($o_form,"PASSW")
解决方法
我从AutoIt论坛
here得到了这个答案
有两个框架,表格在第二个框架中,因此使用$o_frame = _IEFrameGetCollection($oIE,1)来获取第二个框架(索引1是第二个框架,索引0将是第一个框架).
然后使用以下方法从框架中获取表单:$o_form = _IEFormGetObjByName($o_frame,“loginentry”)
所以你的代码部分看起来像:
; get pointers to the login form and username and password fields $o_frame = _IEFrameGetCollection($oIE,1) $o_form = _IEFormGetObjByName($o_frame,"loginentry") $o_login = _IEFormElementGetObjByName($o_form,"PASSW")
USERID和PASSW是隐藏字段,因此您不会看到它们被填写.如果表单未正确提交,请使用可见字段名称:
$o_login = _IEFormElementGetObjByName($o_form,"posterior") $o_password = _IEFormElementGetObjByName($o_form,"fossa"