Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Simular click en submit(imagen) de formularios web (https://www.clubdelphi.com/foros/showthread.php?t=25940)

RazoR 08-10-2005 05:00:32

Simular click en submit(imagen) de formularios web
 
Bueno, les paso a comentar mi duda. Debido a un programa que me habían solicitado necesito completar un formulario web con unos datos y luego apretar el botón submit. Logré completar el formulario web y apretar el botón submit en una página pero al intentar hacerlo donde debía no pude. El problema es que el "botón" submit es una imagen y el código que tenía no me sirve. Acá les muestro la función que uso para completar los campos y simular el click del botón Submit.

Código Delphi [-]
 function TForm1.FillForm(WebBrowser: TWebBrowser; FieldName: string; Value: string): Boolean;
 var
   i, j: Integer;
   FormItem: Variant;
 begin
   Result := False;
   //no form on document
   if WebBrowser.OleObject.Document.all.tags('FORM').Length = 0 then
   begin
     Exit;
   end;
   //count forms on document
   for I := 0 to WebBrowser.OleObject.Document.forms.Length - 1 do
   begin
     FormItem := WebBrowser.OleObject.Document.forms.Item(I);
     for j := 0 to FormItem.Length - 1 do
     begin
       try
         //when the fieldname is found, try to fill out
         if FormItem.Item(j).Name = FieldName then
         begin
           //FormItem.Item(j).Value := Value; //ESTO ES SI ES UN CAMPO
           FormItem.Item(j).Click; //ESTO ES SI ES UN BOTON
           Result := True;
         end;
       except
         Exit; 
       end;
     end;
   end;
 end;

Si alguien sabe cómo puedo hacer para simular el click de ésta imagen que funciona como botón, lo escucho atentamente :D
Debo aclarar que hacer un POST method no sirve en éste caso porque para que me valide la operación que estoy haciendo (un login a un sitio) le pasa un parámetro que es un valor hidden creado aleatoriamente al cargar la página.

La página donde está el formulario es ésta:

http://www.criminapolis.com/index.php?f=f

Fíjense que la imagen no tiene seteado un nombre.

Saludos, RazoR

PD: intenté buscar en el foro pero no encontré nada. Es posible que haya buscado mal.

RazoR 10-10-2005 00:52:02

Nadie sabe o no me supe explicar bien? :(

__hector 10-10-2005 19:50:15

deberias ver si puedes hacer un post de la pagina directamente, en vez de intentar hacer click sobre el boton o imagen, que al final redundara en el mismo resultado.

Aunque yo, trabajando con OLE y el browser, soy un completo novato.

RazoR 11-10-2005 00:59:05

Cita:

Empezado por hector
deberias ver si puedes hacer un post de la pagina directamente, en vez de intentar hacer click sobre el boton o imagen, que al final redundara en el mismo resultado.

Aunque yo, trabajando con OLE y el browser, soy un completo novato.

Cita:

Empezado por RazoR
Debo aclarar que hacer un POST method no sirve en éste caso porque para que me valide la operación que estoy haciendo (un login a un sitio) le pasa un parámetro que es un valor hidden creado aleatoriamente al cargar la página.

No sirve por lo de arriba :(

roman 11-10-2005 01:12:14

Pero los valores hidden no son tan hidden como se dice. Son simples campos que no le aparecen al navegante pero sí que vienen incluídos en la página. Si tienes métodos para leer la información de la página (y creo que con las INDY se puede hacer) entonces basta que leas el valor de ese campo y lo mandes en el POST simulado.

// Saludos

RazoR 11-10-2005 02:29:46

Claro, yo puedo obtener los datos de la página pero si hago un post method no sirve el valor hidden que le das porque al hacer el post es como si "usara otra página" para enviar los datos (o eso creo, porque una vez intenté eso y no servía).

roman 11-10-2005 05:21:48

Bueno, a ver. Sigueindo tu código he podido hacer el POST con

Código Delphi [-]
var
  form: Variant;

begin
  form := WebBrowser1.OleObject.document.forms.item(0);
  form.item(0).value := 'usuario';
  form.item(1).value := 'password';
  form.submit;
end;

Manda a una página con el sguiente error:

Cita:

Pasó mucho tiempo desde que apareció la página hasta que intentaste entrar
pero ese error te lo manda aun cuando escribas directamente los datos. Eso sin contar con múltiples errores de JavaScript que tiene el sitio.

// Saludos

RazoR 11-10-2005 14:09:57

Claro, yo no recuerdo bien, pero creo que eso te lo tiraba porque usaba session cookies, entonces yo primero pasaba por www.criminapolis.com, luego iba a la página que indiqué para obtener el valor hidden (porque si obtenia el código HTML en www.criminapolis.com, al tener frames, no obtenía el código que quería) y ahí si completaba los datos.

roman 11-10-2005 17:12:53

Sí. Leí algo en esa página acerca de que tenía que bajar el nivel de seguridad de mi navegador para poder acceder sin problemas. De más está decir que no pienso hacerlo. Pero bueno, ¿te sirvió el método o no?

// Saludos

IVAND 17-03-2011 18:31:07

Perdon por incomodar

Roman .... ya puedo enviar los parametros correctos a la pagina que necesito y logre hacer click sobre el boton que me valida la informacion con el Webbrowser , pero dos cosas

lo hago asi

primero abro el navegador (seria mejor si no lo hiciera , pero no se como hacerlo


Código:

WebBrowser1.Navigate('https://declaraciones.sri.gov.ec/facturacion-internet/consultas/publico/consulta-validez-documento.jsp');
Segundo

Paso los parametros
Código:

//  form := WebBrowser1.LocationURL('https://declaraciones.sri.gov.ec/facturacion-internet/consultas/publico/consulta-validez-documento.jsp',Sender);
  form := WebBrowser1.OleObject.document.forms.item(0);
  form.item(3).value := '1109285496';
  form.item(4).value := '1307109957001';
  form.item(6).value := '001';
  form.item(7).value := '001';
  form.item(8).value := '0144887';
  form.submit;

Y la pagina me valida perfectamente , pero como puedo saber o como puedo leer el texto que me aparece indicando que mi información esta correcta ?

Gracias de antemano


La franja horaria es GMT +2. Ahora son las 19:39:57.

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