Получить имя формы из iframe с помощью AutoIt
Я использую 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")
2 ответов
Я получил этот ответ от форума 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"
вы используете неправильную функцию для получения объекта формы... _IEForm*элемент * GetObjByName предназначен для подэлементов формы. Вместо этого следует использовать функцию _IEFormGetObjByName.