我不得不编辑我的问题,因为我觉得我没有正确描述它
我正在尝试在当前网页上提交表单。问题是我试图提交的这个表单来自之前的2个提交表单。因此,我无法使用$oForms = _IEFormGetCollection ($oIE)
调用该网址,因为$oIE
的原始网址已更改。
我在第一个表单上使用提交此代码,该代码工作正常,但是一旦我到达下一页,我有一个新的URL,我也需要提交该表单。如何调用当前页面并在页面上获取第3个表单并提交?
$oForms = _IEFormGetCollection ($oIE)
For $oForm In $oForms
_IEFormSubmit($oForm)
Next
答案 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)