PDA

Ver la Versión Completa : Simular click en submit(imagen) de formularios web


RazoR
08-10-2005, 05:00:32
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.


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
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.
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


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:


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


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


Segundo

Paso los parametros
// 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