2011-06-01 27 views
6

Estoy usando AutoIt para automatizar el llenado de formularios en un sitio web.Obtener el nombre del formulario de iframe utilizando AutoIt

Pero estoy teniendo un problema para obtener el nombre del formulario de un sitio web. Miro la fuente del HTML y encuentro el formulario y su nombre, pero sigo recibiendo un error IEStatus_noMatch.

¿Hay alguna manera más fácil de obtener el nombre del formulario o cómo encontrarlo?

Podría enfrentar el mismo problema con los objetos.

$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") 

Respuesta

7

Tengo esta respuesta de foro AutoIt here

Hay dos marcos y el formulario está en el segundo cuadro a fin de utilizar $o_frame = _IEFrameGetCollection($oIE, 1) para obtener el segundo bastidor (índice 1 es el segundo cuadro, el índice 0 sería la primera)

a continuación, obtener la forma del marco mediante el uso de: $o_form = _IEFormGetObjByName($o_frame, "loginentry")

Así que esa sección de su código se vería así:

campos
; 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") 

ID de usuario y Passw están ocultos por lo que no verá los llenó in. Si el formulario no se envía correctamente, use los nombres de campo visibles:

$o_login = _IEFormElementGetObjByName($o_form, "posterior") 
$o_password = _IEFormElementGetObjByName($o_form, "fossa" 
1

Está utilizando la función incorrecta para obtener el objeto de formulario ... _IEForm * Elemento * GetObjByName es de forma sub-elementos. Debería usar la función _IEFormGetObjByName en su lugar.

+1

Esa es una buena respuesta, pero .. IT en realidad no soluciona el problema. He hecho el cambio. Pero todavía obtengo $ _IEStatus_NoMatch con el sitio web en el ejemplo. – Whitecat

Cuestiones relacionadas