Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Problema con evento NavigationCompleted de EdgeBrowse (https://www.clubdelphi.com/foros/showthread.php?t=95661)

asoto92 22-04-2022 05:40:31

Problema con evento NavigationCompleted de EdgeBrowse
 
Buenas noches a todos, voy a tratar de ser lo mas preciso, realize un navegador con EdgeBrowse en Delphi 10.4 Community.
Despliega la pagina que deseo, hasta aqui ok.
Mediante codigo asigno el usuario a la pagina, hasta aqui ok, muestro codigo:

Código Delphi [-]
     cadUsuario   := 'document.getElementById("i0116").value = "' + sUsuario + '";';
     cadPassword  := 'document.getElementById("i0118").value = "' + sPassword + '";';
     cadBotAceptar := 'document.getElementById("idSIButton9").click();';

     EdgeBrowser.ExecuteScript(
        ' while (1 == 1)  {' + #13#10 +
        '    var v = document.getElementById("i0116"); ' + #13#10 +
        '    if (v !== null){ ' + #13#10 +
                cadUsuario  + #13#10 +
        '       sleep(5000); ' + #13#10 +
                cadBotAcptar  + #13#10 +
        '       break; ' + #13#10 +
        '    } ' + #13#10 +
        '    else { ' + #13#10 +
        '       break; ' + #13#10 +
        '    } ' + #13#10 +
        ' }'
        );

Al ejecutar el cadBotAceptar que es el que hace el click en el boton de Aceptar, el sitio muestra el mensaje de que "Introdusca un usuario Valido etc etc. (este es el Error).

Es como si aun no cargara completamente la pagina y el click al boton de Aceptar se diera antes de introducir el Usuario. De echo me he dado cuenta que aun no ha desplegado completamente la pagina, segun yo. Y se me hace extraño por que el codigo mostrado anteriormente lo ubico en el Evento NavigationCompleted :

procedure TfrmMain.EdgeBrowserNavigationCompleted(Sender: TCustomEdgeBrowser; IsSuccess: Boolean;
WebErrorStatus: TOleEnum);

El evento antes mencionado se supone que se ejecuta cuando la pagina Web se termino de desplegar, bueno asi lo entendi.


Si yo ejecuto el proceso de forma manual, escribo el usuario, hago click en el boton de aceptar, me despliega la pantalla para que capture el Password, todo bien.

Todo esto es por que la empresa no desea que los usuarios tecleen el Usuario y el Password, si no que lo haga el programa de forma automatica y les de acceso al sitio web.

De antemano muchisimas gracias.

Garada 22-04-2022 15:55:44

1 Archivos Adjunto(s)
Depende del código de la web.
Muchas controlan si un campo es correcto al modificarlo no justo antes de enviar.

Tienes que forzar el evento con javascript después de asignarles el valor, por ejemplo:

Código:

ev = d.createEvent("Events");
ev.initEvent("input", true, true);

ee = e.getElementById("i0116");
ee.value = "aaaaaa";
ee.dispatchEvent(ev);

ee = e.getElementById("i0118");
ee.value = "ppppp";
ee.dispatchEvent(ev);

El evento "input" es el mas usado pero si miras el elemento en las utilidades de desarrollador del navegador puedes ver los eventos asignados al campo.

asoto92 26-04-2022 02:42:32

Problema con evento NavigationCompleted de EdgeBrowse
 
Te agradezco mucho tu ayuda, me sirvio ya logre que el programa diera el Usuario y Password de forma Automatica sin intervencion del Usuario.

Disculpa la tardanza en la respuesta, pero es que estaba codificando y me emocione.

Muchisimas gracias.


La franja horaria es GMT +2. Ahora son las 14:25:48.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi