自动 - 如何在当前网页上提交第三张表格

时间:2014-05-16 23:33:59

标签: autoit

我不得不编辑我的问题,因为我觉得我没有正确描述它

我正在尝试在当前网页上提交表单。问题是我试图提交的这个表单来自之前的2个提交表单。因此,我无法使用$oForms = _IEFormGetCollection ($oIE)调用该网址,因为$oIE的原始网址已更改。

我在第一个表单上使用提交此代码,该代码工作正常,但是一旦我到达下一页,我有一个新的URL,我也需要提交该表单。如何调用当前页面并在页面上获取第3个表单并提交?

$oForms = _IEFormGetCollection ($oIE)
For $oForm In $oForms
  _IEFormSubmit($oForm)
Next

1 个答案:

答案 0 :(得分:1)

由于页面正在更改,因此加载新页面时原始表单集合将变为无效。您需要每次都获得新的表单集合。

代码必须更像是:

Local $aFormClassNames[3] = ["formClassNameOnPage1", "formClass2", "etcEtc"]

For $i = 1 To 3
    $oForm = _IEFormGetObjByName($oIE, $aFormClassNames[$i])

    Switch $i
        Case 1
            ; Fill out form 1
        Case 2
            ; Fill out form 2
        Case 3
            ; Fill out form 3
    EndSwitch

    _IEFormSubmit($oForm)
Next

最好还使用表单类名称,而不是盲目地通过索引提交表单。 Web开发人员有时会在最奇怪的地方使用标签。


上述代码和说明适用于提交表单导致带有新表单的新页面的情况。

要在单个页面上提交第3个表单,您仍然可以使用_IEFormGetObjByName。大多数表单将具有不同的名称,但在它们具有相同名称的情况下,您可以使用函数的第3个参数来指定基于零的索引,例如:

$oForm = _IEFormGetObjByName($oIE, "theFormName", 2)
_IEFormSubmit($oForm)