6

我正在使用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")
4

2 回答 2

7

我从这里的 AutoIt 论坛得到了这个答案

有两帧,表格在第二帧,所以$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"
于 2011-06-03T21:26:15.533 回答
1

您使用错误的函数来获取表单对象... _IEForm* Element *GetObjByName 用于表单子元素。您应该改用 _IEFormGetObjByName 函数。

于 2011-06-02T08:59:43.547 回答