Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-04-2022
asoto92 asoto92 is offline
Miembro
 
Registrado: feb 2008
Posts: 13
Poder: 0
asoto92 Va por buen camino
manipular web usando edgebrowser

Hola a todos, necesito manipular una sitio web, introduciendo el Usuario y Password, el navegador que uso es el EdgeBrowser, estoy trabajando con Delphi 10.4 Community, mi browser es funcional, ya puedo ver la pagina Web, pero no se como introducir el Usuario y el Password en la web. Es la primera vez que trabajo con este browser (EdgeBrowser), ojala tengan una idea de como introducir los datos.

De antemano muchas gracias por su ayuda.
Responder Con Cita
  #2  
Antiguo 15-04-2022
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Una posibilidad podría ser utilizar el método "ExecuteScript" de los objetos "TEdgeBrowser". Por ejemplo, en el evento "BrowserNavigationCompleted" podrías hacer uso del método en cuestión de una forma similar a la siguiente:
Código Delphi [-]
  EdgeBrowser.ExecuteScript('document.getElementById("name").value = "Pepe";');
  EdgeBrowser.ExecuteScript('document.getElementById("email").value = "pepe@gmail.com";');
  EdgeBrowser.ExecuteScript('document.getElementById("submit").click();');
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 15-04-2022
asoto92 asoto92 is offline
Miembro
 
Registrado: feb 2008
Posts: 13
Poder: 0
asoto92 Va por buen camino
manipular web usando edgebrowser

Hola Dec, gracias por tu pronta respuesta, deme oportunidad de hacer algunas pruebas con lo que me proporcionaste y te comento a la brevedad lo que me resulte.

Hasta pronto.
Responder Con Cita
  #4  
Antiguo 20-04-2022
asoto92 asoto92 is offline
Miembro
 
Registrado: feb 2008
Posts: 13
Poder: 0
asoto92 Va por buen camino
Seguir con Manipular web usando edgebrowser

Disculpa la tardanza, estoy intentando probar tu codigo de ejemplo, pero creo que me faltan cosas, por lo que entiendo cada linea de codigo que me indicaste es una especie de script que se ejecuta en el procedimiento:

Código Delphi [-]
procedure TfrmMain.EdgeBrowserExecuteScript(Sender: TCustomEdgeBrowser; AResult: HResult;
  const AResultObjectAsJson: string);

Ahora estoy poniendo el comando que me indicaste en:

Código Delphi [-]
   procedure TfrmMain.EdgeBrowserNavigationCompleted(Sender: TCustomEdgeBrowser; IsSuccess: Boolean;
     WebErrorStatus: TOleEnum);
   begin
      EdgeBrowser.ExecuteScript('document.getElementById("USUARIO").value = "pepe@gmail.com";');
   end;

Y al ejecutarse aparece: (anexe imagen) pero lo que aparece es:

Cita:
The script has completed:
Result = $0
ResultObject = null
No se interpretarlo, pero entiendo que al parecer corrio bien el Script, pero en mi pagina no alimento el espacio para el usuario, no se que mas este faltando?

Saludos.

Última edición por dec fecha: 20-04-2022 a las 10:00:01. Razón: Poner etiquetas DELPHI y QUOTE
Responder Con Cita
  #5  
Antiguo 20-04-2022
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

El método que indicas "EdgeBrowserExecuteScript" es un evento, que, en realidad puedes usar o no, dependiendo de tus necesidades. Esto lo digo poque, el mensaje / alerta que te aparece, no tiene porqué aparecerte, si no lo necesitas.

Por otro lado, el método "EdgeBrowser.ExecuteScript" se llama en "EdgeBrowserNavigationCompleted" porque, en ese momento, en principio, es cuando podemos acceder a los diferentes elementos HTML que existan en la página en cuestión.

El método "EdgeBrowser.ExecuteScript" requiere de un parámetro de tipo "string" y esta "cadena" debe indicar el código Javascript que queremos que se ejecute en el contexto de la página cargada en el navegador.

El método "document.getElementById" es por tanto código Javascript, y, en este caso, buscará un elemento a partir de su ID. De modo que el siguiente código:

Código:
document.getElementById("USUARIO").value = 'Pepe';
... viene a significar "Busca el elemento con ID = "USUARIO", y, cambia su propiedad "value" con "Pepe". Si este código no funciona, en principio, es porque no existe ningún elemento con ID = "USUARIO", o, dicho elemento, no tiene ninguna propiedad "value".

Es decir, en la página en cuestión, debería haber un elemento como el siguiente, para que el código Javascript anterior funcionase como se espera que lo haga:

Código:
<input id="USUARIO" />
Por tanto, deberás echar un vistazo al código fuente de la página, y, ver qué elemento alberga el usuario, cuál es su ID, o, si no tiene ID, cuál es su atributo "name", en definitiva, para saber qué código Javascript es necesario utilizar para hacer lo que quieres.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 20-04-2022
asoto92 asoto92 is offline
Miembro
 
Registrado: feb 2008
Posts: 13
Poder: 0
asoto92 Va por buen camino
Me ayudo mucho tu guia, no sabes como te lo agradezo, ya pude afectar el sitio web con el dato del Usuario y Password.

Muchismas Gracias
Responder Con Cita
  #7  
Antiguo 22-03-2023
alquimista alquimista is offline
Miembro
 
Registrado: ene 2008
Posts: 203
Poder: 17
alquimista Va por buen camino
Como acceder al user y pass dentro de una tabla

Buenas
he intentado hacer lo mismo en una web pero no consigo entrar el usuario y el password automáticamente.
Una parte del código de la página es:



Código PHP:
<div id="form_login">
        <
form action="/index.php" method="post">
            <
table>
                <
tbody><tr>
                    <
td>
                        
Usuario/a                    </td>
                    <
td>
                        <
input type="text" name="usuario" class="inputtexto" tabindex="1" maxlength="50" value="">
                    </
td>
                    <
td rowspan="2" style="text-align: right;">
                        <
input type="submit" name="login" class="botonform" tabindex="3" value="Entrar">
                    </
td>
                </
tr>
                <
tr>
                    <
td>
                        
Contraseña                    </td>
                    <
td>
                        <
input type="password" name="password" tabindex="2" maxlength="50" class="inputtexto">
                    </
td>
                </
tr>
            </
tbody></table>
        </
form>
        <
div class="olvidaContrasenya" style="font-size: 10pt; display: none;">Introduzca usuario/a y contraseña para acceder al sistemaSi olvidó algún datohaga clic aquí:            <p style="text-align: center; margin: 4px;">
                <
a href="#" onclick="muestraAjaxModal('inc/ajax/recordar_pass.php', 'Recordar Usuario/Contraseña', 305, 235);">
                    
Recordar datos                </a>
            </
p>
        </
div>
            </
div

el código que he usado es:
Código Delphi [-]
procedure TForm2.EdgeBrowser1NavigationCompleted(Sender: TCustomEdgeBrowser;
  IsSuccess: Boolean; WebErrorStatus: TOleEnum);
begin
  EdgeBrowser1.ExecuteScript('document.getElementById("usuario").value = "23232323A";');
  EdgeBrowser1.ExecuteScript('document.getElementById("password").value = "password";');
  EdgeBrowser1.ExecuteScript('document.getElementById("submit").click();');
end;


Pero no obtengo nada. Ni me da error.

No se mucho de Javascript. He probado a poner getElementsByName pero no sé como seguir


Un saludo

Última edición por dec fecha: 30-03-2023 a las 08:46:14. Razón: Poner etiquetas PHP y Delphi
Responder Con Cita
  #8  
Antiguo 29-03-2023
alquimista alquimista is offline
Miembro
 
Registrado: ene 2008
Posts: 203
Poder: 17
alquimista Va por buen camino
Encontré una solución

Eureka!!!!!!! Lo encontré.

Respondo para los que hayan tenido el mismo problema que yo.
He visto de casualidad una función de javascript (no sé ni donde la encontré) y al implementarla he podido llegar a la solución.


Si alguien más sabio sabe interpretarla que me la explique
He añadido una variable booleana para que solo lo haga una vez, ya que si se vuelve a ejecutar te saca del login.


Código Delphi [-]
procedure TForm2.EdgeBrowser1NavigationCompleted(Sender: TCustomEdgeBrowser;
  IsSuccess: Boolean; WebErrorStatus: TOleEnum);
begin
 if (Unavez=false) then
   begin
  EdgeBrowser1.ExecuteScript('document.querySelector("input[type=text]").value="tunif22222222A";');
  EdgeBrowser1.ExecuteScript('document.querySelector("input[type=password]").value="tupassword";');
  EdgeBrowser1.ExecuteScript('document.querySelector("input[type=submit]").click();');
   Unavez:=true;
   end;
end;

Última edición por dec fecha: 30-03-2023 a las 08:46:29. Razón: Poner etiquetas Delphi
Responder Con Cita
  #9  
Antiguo 30-03-2023
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Cita:
Empezado por alquimista Ver Mensaje
[...] el código que he usado es:
Código Delphi [-]
procedure TForm2.EdgeBrowser1NavigationCompleted(Sender: TCustomEdgeBrowser;
  IsSuccess: Boolean; WebErrorStatus: TOleEnum);
begin
  EdgeBrowser1.ExecuteScript('document.getElementById("usuario").value = "23232323A";');
  EdgeBrowser1.ExecuteScript('document.getElementById("password").value = "password";');
  EdgeBrowser1.ExecuteScript('document.getElementById("submit").click();');
end;


Pero no obtengo nada. Ni me da error.
Lo que sucede es que los "inputs" no tienen un atributo "id", por lo que "getElementById" retorará "null" y por eso no te funciona como esperas.

Respecto de "getElementsByName", este método retorna un array de elementos: sí que podría retornarte los elementos en cuestión, porque, sí tienen atributo "name", pero, el código JS a ejecutar debería quedar tal que así:

Código:
document.getElementsByName("usuario")[0].value = '23232323A';

Cita:
Empezado por alquimista Ver Mensaje
Eureka!!!!!!! Lo encontré.
En efecto, "querySelector" es, por decirlo de alguna manera, más potente que los métodos mencionados, porque, permite seleccionar elementos mediante "selectores", no sólo mediante sus atributos "id" o "name".

De hecho, el código que ejecutas podría utilizar ahora el atributo "name", evitando así seleccionar otros posibles "inputs" que existiesen en la página del tipo que indicas, es decir, podrías usar algo como esto:

Código:
document.querySelector("input[name=usuario]").value="tunif22222222A";
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #10  
Antiguo 30-03-2023
alquimista alquimista is offline
Miembro
 
Registrado: ene 2008
Posts: 203
Poder: 17
alquimista Va por buen camino
Probé con
Código:
  EdgeBrowser1.ExecuteScript('document.getElementsByName("usuario").value = "23232323A";');
pero no hacía nada. Lo del ById, efectivamente en la página no había Id, no funcionó.

Probaré con lo último que has puesto a ver que pasa.
Código:
document.querySelector("input[name=usuario]").value="tunif22222222A";
Un saludo
Responder Con Cita
  #11  
Antiguo 30-03-2023
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Cita:
Empezado por alquimista Ver Mensaje
Probé con
Código:
  EdgeBrowser1.ExecuteScript('document.getElementsByName("usuario").value = "23232323A";');
pero no hacía nada. Lo del ById, efectivamente en la página no había Id, no funcionó.

Probaré con lo último que has puesto a ver que pasa.
Código:
document.querySelector("input[name=usuario]").value="tunif22222222A";
Un saludo
No es que "getElementsByName" no hiciese nada: lo que ocurre es que ese método retorna un array de objetos, de modo que lo que fallaba era esto: getElementsByName("usuario").value, que, tendría que haber sido algo así: getElementsByName("usuario")[0].value

Respecto de que no pasaba nada... entiendo que te refieres a ningún error, lo que ocurre es que el error se produciría en el contexto de la página web en cuestión. Creo que usando algún evento de "TEdgeBrowser", o, la "consola de desarrollo" del mismo podrías ver dicho error.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 30-03-2023 a las 21:09:59.
Responder Con Cita
  #12  
Antiguo 13-04-2023
Gigolo5236 Gigolo5236 is offline
Registrado
 
Registrado: abr 2023
Posts: 3
Poder: 0
Gigolo5236 Va por buen camino
Por aca también lo ando probado y ya solucione algunas cosas
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Manipular Contenido XML webmasterplc OOP 3 20-08-2012 16:56:37
manipular la tabla arp dtomeysoto Varios 2 16-09-2011 15:54:47
Manipular winamp ColdFusion Varios 1 04-04-2009 04:20:51
Manipular un CD carlocf Varios 12 14-10-2008 07:12:11
DBLookupComboBox manipular Sayuri Conexión con bases de datos 3 26-07-2005 09:17:02


La franja horaria es GMT +2. Ahora son las 03:32:09.


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
Copyright 1996-2007 Club Delphi