Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-04-2006
lpkwebagent007 lpkwebagent007 is offline
Registrado
 
Registrado: abr 2006
Posts: 7
Poder: 0
lpkwebagent007 Va por buen camino
WebBrowser Login

Wenas tardes (tardes aca) tengo el siguiente problema

Apenas estoy empezando a trabajar en delphi (antes lo hacía en visual basic pero tiendemucho al desorden y las API's es hsta que alguien las descubra) asi que...tened paciencia conmigo :P

lo que yo quiero hacer es un WebBrowser que me auto logee y que corra en segundo plano (ya hice el webbrowser para delante, apra atras ) pero no logro hacer que se loggee

Este es el codigo para loggear

Código PHP:
 <input type="text" name="username" id="loginUsername"/>
 <
input type="password" name="password" id="loginPassword"/>
 <
input type="image" src="http://graficos.com/clickme.png" name="login" value="Login" id="loginSubmit"/>
 <
input type="checkbox" name="autologin" id="loginAuto" />           
</
form
se puede hacer mediante los imputs...pero no logro escribirlos
alguien sabe? se los agradezco de antemano

Última edición por dec fecha: 03-04-2006 a las 01:29:02.
Responder Con Cita
  #2  
Antiguo 03-04-2006
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,

No sé si te irá bien e ignoro si habrá otra forma "más elegante", pero, a bote pronto, se me ocurre que "auto-envíes" el formulario.

¿Bastaría este poco de código JavaScript luego del código HTML del formulario?

Código PHP:
<script type="text/javascript">
  
document.nombredetuformulario.submit();
</script> 
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 03-04-2006
lpkwebagent007 lpkwebagent007 is offline
Registrado
 
Registrado: abr 2006
Posts: 7
Poder: 0
lpkwebagent007 Va por buen camino
pero me parece que para eso necesito escribir los datos desde antes no? (voy a probar aver si se puede )
además, la página de la que hablo no es mía, es como si me quisiera loggear al mail de yahoo

mas bien me preguntaba si podría crear el navegador (win32) y hacerlo que loggee con un TwebBrowser (dandole los datos desde antes)

lo logré hacer con Visual basic...pero no se..no puedo traducirlo

Código:
Private Sub Login()
    On Error Resume Next
    WebBrowser.Document.All(Text3.Text).Value = TBlogin.Text ' logea username
    WebBrowser.Document.All(Text4.Text).Value = TBpassword.Text ' logea password
    SetCursorPos 753, 212
    mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 'Mouse down
    mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 'Mouse up
sustituye los imputs que encuentra y con la API simula un click del ratón (que sería en el boton submit)

un saludo
Responder Con Cita
  #4  
Antiguo 04-04-2006
lpkwebagent007 lpkwebagent007 is offline
Registrado
 
Registrado: abr 2006
Posts: 7
Poder: 0
lpkwebagent007 Va por buen camino
Ping!
he encontrado el código,...pero no me funciona (ya mas o menos voy teniendo idea)
Código Delphi [-]
// Example: fill out 3 fields on a webpage. 
// If a field is found, continue to the next field; 
// else show an error message.
procedure TForm1.Button1Click(Sender: TObject);
begin
  if not FillForm(WebBrowser1, 'login', 'jaimito') then
    ShowMessage('Error: field LOGIN not found on page')
  else begin
    if not FillForm(WebBrowser1, 'password', 'soytupassword') then
      ShowMessage('Error: field PASSWORD not found on page')
    else begin
      if not FillForm(WebBrowser1, 'paja', 'activated') then
        ShowMessage('Error: field PAJA not done!');
    end;
  end; 
end; 

//Esto no entiendo
// Fill out the first field with the name "FieldName" with a value. 
// We assume that all the fields of the form(s) have different names.
function TForm1.FillForm(WB: TWebBrowser; FieldName, Value: string): Boolean;  
var  
  FormNr, ItemNr: integer;  
  TheForm: Variant;  
begin  
  Result := False;  
  // Check if there is at least one form in the document  
  if WB.OleObject.Document.All.Tags('FORM').Length = 0 then begin  
    ShowMessage('Error: no FORM found on page');
    Exit;  
  end;  
  // Process all forms of the document  
  for FormNr := 0 to WB.OleObject.Document.Forms.Length - 1 do begin  
    TheForm := WB.OleObject.Document.Forms.Item(FormNr); 
    // Process all forms of the document, stop if found  
    for ItemNr := 0 to WB.OleObject.Document.Forms.Item.length - 1 do
      try  
        // If the fieldname is found, try to fill out and stop  
        if TheForm.Item(ItemNr).Name = FieldName then begin  
          TheForm.Item(ItemNr).Value := Value;  
          Result := True;
        end;  
      except  
        Break;  
      end;
      if Result then Break; 
    end;
    // Remove next line if there are several forms in the document with the
    // same fieldnames an which should be set to the same value
    if Result then Break;
  end;  
end;

y sin embargo, compilando me salen chorrocientos de errores

[Error] Unit1.pas(28): E2003 Undeclared identifier: 'FillForm'
[Error] Unit1.pas(33): E2003 Undeclared identifier: 'Result'
[Error] Unit1.pas(35): E2003 Undeclared identifier: 'WB'
[Error] Unit1.pas(40): E2029 'DO' expected but identifier 'OleObject' found
[Error] Unit1.pas(41): E2066 Missing operator or semicolon
[Error] Unit1.pas(41): E2066 Missing operator or semicolon
[Error] Unit1.pas(43): E2029 'DO' expected but identifier 'OleObject' found
[Error] Unit1.pas(46): E2003 Undeclared identifier: 'FieldName'
[Error] Unit1.pas(47): E2003 Undeclared identifier: 'Value'
[Error] Unit1.pas(57): E2097 BREAK or CONTINUE outside of loop
[Error] Unit1.pas(59): E2029 '.' expected but ';' found
[Error] Unit1.pas(66): E2003 Undeclared identifier: 'FillForm'
[Fatal Error] Project1.dpr(5): F2063 Could not compile used unit 'Unit1.pas'

(no....no tengo ni p*ta idea de Delphi, estoy en pañales )

Última edición por lpkwebagent007 fecha: 04-04-2006 a las 02:15:04.
Responder Con Cita
  #5  
Antiguo 05-04-2006
Avatar de jorge1987
jorge1987 jorge1987 is offline
Miembro
 
Registrado: may 2005
Ubicación: Buenos Aires
Posts: 244
Poder: 19
jorge1987 Va por buen camino
Creo que no interpretaste bien el codigo, tenes que reemplazar los nombres del codigo, por los de tu browser, si tu browser (el componente), se llama WebBrowser1, el error que te tira en WB, de seguro que es, que tu WebBrowser, se llama de otra manera, y supongo, que el resto de los errores, estan relacionados con este que acabo de explicar.

Saludos
Responder Con Cita
  #6  
Antiguo 08-04-2006
lpkwebagent007 lpkwebagent007 is offline
Registrado
 
Registrado: abr 2006
Posts: 7
Poder: 0
lpkwebagent007 Va por buen camino
todo resuelto..gracias!!!!

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleCtrls, SHDocVw, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    WebBrowser1: TWebBrowser;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
Function 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;
          Result := True;
        end;
      except
        Exit; 
      end;
    end;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
Begin
if FillForm(WebBrowser1, 'username', 'yoo soy user') = False then
    ShowMessage('Error. El campo "username" no se encuentra');
if FillForm(WebBrowser1, 'password', 'y yo soy pasword') = False then
    ShowMessage('Error. El campo "password" no se encuentra');
End;

procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowser1.Navigate('http://www.yosoytuloginparticular');
end;

end.

Última edición por lpkwebagent007 fecha: 08-04-2006 a las 04:33:12.
Responder Con Cita
  #7  
Antiguo 11-07-2006
Novás Novás is offline
Miembro
 
Registrado: oct 2003
Ubicación: Galicia
Posts: 146
Poder: 21
Novás Va por buen camino
He probado esta función y funciona perfectamente cuando la página no tiene frames, alguien tiene alguna modificación de la misma para que me funcione con una página con frames.

La página que necesito rellenar es esta:
https://recargas.alphyra.es/recargasWeb/
__________________
Hay dos cosas infinitas: el Universo y la estupidez humana. http://www.cybertarjetas.net
Responder Con Cita
  #8  
Antiguo 30-11-2009
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
he probado la funcion y funciona bien se rellenan los campos, pero ¿como habria que hacer para que se pulsase también el boton de logueo?

por ejemplo para autologuearse a Ebay
https://signin.ebay.es/ws/eBayISAPI.dll?signIn&i1=2

EDITO SOLUCIONADO:
WebBrowser1.OleObject.document.forms.item(0).submit();

aunque me surge otro problema no consigo que me marque la casilla de seguir conectado
añado esto pero no funciona:
FillForm(WebBrowser1, 'keepMeSignInOption', '1')
no me da error pero no me marca la casilla

Última edición por cocute fecha: 30-11-2009 a las 17:37:23.
Responder Con Cita
  #9  
Antiguo 30-11-2009
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por cocute Ver Mensaje
aunque me surge otro problema no consigo que me marque la casilla de seguir conectado
añado esto pero no funciona:
FillForm(WebBrowser1, 'keepMeSignInOption', '1')
no me da error pero no me marca la casilla
Si con casilla te refieres a un cuadro de verificación (check box), algo como esto puede servirte:

Código Delphi [-]
Var
  Doc :Variant;
Begin
  Doc := WebBrowser1.Document;
  Doc.GetElementByID ('NombreDelCheckBox').Checked := True;

Responder Con Cita
  #10  
Antiguo 30-11-2009
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
Cita:
Empezado por Al González Ver Mensaje
Si con casilla te refieres a un cuadro de verificación (check box), algo como esto puede servirte:


Código Delphi [-]
Var
Doc :Variant;
Begin
Doc := WebBrowser1.Document;
Doc.GetElementByID ('NombreDelCheckBox').Checked := True;





Gracias Mil, funciona perfectamente.
Responder Con Cita
  #11  
Antiguo 30-11-2009
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
otro problema que me surge es que si el webbrowser no esta en primer plano no me carga la web en el webbrowser y por lo tanto no me hace el logeo automático

Última edición por cocute fecha: 01-12-2009 a las 14:06:35.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Ayuda En Login Y Pass Para Ingresar En un programa creado en Delphi Solojuegospc.tk Conexión con bases de datos 8 07-07-2005 03:18:28
Login y Logout douguiehm Varios 5 10-12-2004 19:46:36
Duda con WebBrowser hermes_32 Internet 6 24-05-2004 18:45:57
Suprimir Login InterBase jsc Conexión con bases de datos 4 29-01-2004 02:46:51
Formulario de login no funciona!! ElCherchu Varios 4 09-10-2003 15:54:51


La franja horaria es GMT +2. Ahora son las 16:32:49.


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