6

AutoItを使用して、Webサイトのフォームへの入力を自動化しています。

しかし、Webサイトからフォーム名を取得するのに問題があります。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フォーラムからこの答えを得ました

2つのフレームがあり、フォームは2番目のフレームにあるため$o_frame = _IEFrameGetCollection($oIE, 1)、2番目のフレームを取得するために使用します(インデックス1は2番目のフレーム、インデックス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*要素*GetObjByNameはフォームサブ要素用です。代わりに、_IEFormGetObjByName関数を使用する必要があります。

于 2011-06-02T08:59:43.547 に答える