我正在使用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")
答案 0 :(得分:7)
我从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, "USERID")
$o_password = _IEFormElementGetObjByName($o_form, "PASSW")
USERID和PASSW是隐藏字段,因此您不会看到它们已填写。如果表单未正确提交,请使用可见字段名称:
$o_login = _IEFormElementGetObjByName($o_form, "posterior")
$o_password = _IEFormElementGetObjByName($o_form, "fossa"
答案 1 :(得分:1)
您使用了错误的函数来获取表单对象... _IEForm * 元素 * GetObjByName用于表单子元素。您应该使用_IEFormGetObjByName函数。