Jontart
11-03-2015, 22:01:04
Saludos cordiales,
hace bastante tiempo que no entro por aquí, y que no uso delphi, por lo que estoy bastante perdido.
Tengo un problema con un TWebBrowser, a la hora de mandar información a una página web por código.
Al pulsar un TButtom, meto la dirección de una página web, introduzco el usuario y el password que me piden y valido. Sin problemas.
Al pulsar un segundo TButtom, me dirigo a un link determinado de la página anterior. Sin problemas.
Al pulsar un tercer TButtom, edito un TEXAREA y hago un SUBMIT al servidor. También sin problemas.
El PROBLEMA está cuando intento hacerlo todo seguido, sin recurrir a los TButtom.
Código Delphi:
procedure TForm1.Button1Click(Sender: TObject);
Var
ovElemento: OleVariant;
begin
// Cargo la página en cuestión
WebBrowser1.Navigate('direccion pagina web');
// Espero a que esté totalmente cargada
while webBrowser1.ReadyState < READYSTATE_INTERACTIVE do Application.ProcessMessages;
// Doy valores a los elementos CONOCIDOS que me interesan
ovElemento := WebBrowser1.OleObject.Document.forms.item(0).elements;
ovElemento.item(1).value:='usuario'; // Escribe en la página el usuario
ovElemento.item(2).value:='contraseña'; // Escribe en la página la password
ovElemento.item(3).click; // Mandamos al servidor la información
end;
procedure TForm1.Button2Click(Sender: TObject);
Var
ovElemento: OleVariant;
begin
ovElemento:= WebBrowser1.OleObject.Document.links;
ovElemento.item(38).click; // Conozco el item que me interesa. No necesito buscarlo.
end;
procedure TForm1.Button3Click(Sender: TObject);
Var
ovElemento: OleVariant;
begin
ovElemento := WebBrowser1.OleObject.Document.forms.item(1).elements;
ovElemento.item(2).value := 'Texto a enviar'; // Pongo el texto que necesito en un TextArea
ovElemento.item(5).click; // Hago el Submit
end;
Hasta aquí funciona correctamente. Pero cuando quiero hacerlo todo seguido, por ejemplo al pulsar también un TButtom, no me sale.
procedure TForm1.Button4Click(Sender: TObject);
Var
ovElemento: OleVariant;
begin
// Cargo la página en cuestión
WebBrowser1.Navigate(''direccion pagina web'');
// Espero a que esté totalmente cargada
while webBrowser1.ReadyState < READYSTATE_INTERACTIVE do Application.ProcessMessages;
// Doy valores a los elementos CONOCIDOS que me interesan
ovElemento := WebBrowser1.OleObject.Document.forms.item(0).elements;
ovElemento.item(1).value:='usuario'; // Escribe en la página el usuario
ovElemento.item(2).value:='contraseña'; // Escribe en la página la password
ovElemento.item(3).click; // Mandamos al servidor la información
ovElemento:= WebBrowser1.OleObject.Document.links;
ovElemento.item(38).click; // ********** AQUI FALLA ***************
ovElemento := WebBrowser1.OleObject.Document.forms.item(1).elements;
ovElemento.item(2).value := 'Texto a enviar''; // Pongo el texto que necesito en un TextArea
ovElemento.item(5).click; // Hago el Submit
end;
Seguramente será una tontería, o incluso de la página en cuestión, pero llevo dándole vueltas varios días y no consigo dar con la solución.
He comprobado que si antes del fallo interrumpo el programa, por ejemplo con un showmessage() , si me funciona. ¿¿??, pero con un sleep() no.
Gracias anticipadas.
hace bastante tiempo que no entro por aquí, y que no uso delphi, por lo que estoy bastante perdido.
Tengo un problema con un TWebBrowser, a la hora de mandar información a una página web por código.
Al pulsar un TButtom, meto la dirección de una página web, introduzco el usuario y el password que me piden y valido. Sin problemas.
Al pulsar un segundo TButtom, me dirigo a un link determinado de la página anterior. Sin problemas.
Al pulsar un tercer TButtom, edito un TEXAREA y hago un SUBMIT al servidor. También sin problemas.
El PROBLEMA está cuando intento hacerlo todo seguido, sin recurrir a los TButtom.
Código Delphi:
procedure TForm1.Button1Click(Sender: TObject);
Var
ovElemento: OleVariant;
begin
// Cargo la página en cuestión
WebBrowser1.Navigate('direccion pagina web');
// Espero a que esté totalmente cargada
while webBrowser1.ReadyState < READYSTATE_INTERACTIVE do Application.ProcessMessages;
// Doy valores a los elementos CONOCIDOS que me interesan
ovElemento := WebBrowser1.OleObject.Document.forms.item(0).elements;
ovElemento.item(1).value:='usuario'; // Escribe en la página el usuario
ovElemento.item(2).value:='contraseña'; // Escribe en la página la password
ovElemento.item(3).click; // Mandamos al servidor la información
end;
procedure TForm1.Button2Click(Sender: TObject);
Var
ovElemento: OleVariant;
begin
ovElemento:= WebBrowser1.OleObject.Document.links;
ovElemento.item(38).click; // Conozco el item que me interesa. No necesito buscarlo.
end;
procedure TForm1.Button3Click(Sender: TObject);
Var
ovElemento: OleVariant;
begin
ovElemento := WebBrowser1.OleObject.Document.forms.item(1).elements;
ovElemento.item(2).value := 'Texto a enviar'; // Pongo el texto que necesito en un TextArea
ovElemento.item(5).click; // Hago el Submit
end;
Hasta aquí funciona correctamente. Pero cuando quiero hacerlo todo seguido, por ejemplo al pulsar también un TButtom, no me sale.
procedure TForm1.Button4Click(Sender: TObject);
Var
ovElemento: OleVariant;
begin
// Cargo la página en cuestión
WebBrowser1.Navigate(''direccion pagina web'');
// Espero a que esté totalmente cargada
while webBrowser1.ReadyState < READYSTATE_INTERACTIVE do Application.ProcessMessages;
// Doy valores a los elementos CONOCIDOS que me interesan
ovElemento := WebBrowser1.OleObject.Document.forms.item(0).elements;
ovElemento.item(1).value:='usuario'; // Escribe en la página el usuario
ovElemento.item(2).value:='contraseña'; // Escribe en la página la password
ovElemento.item(3).click; // Mandamos al servidor la información
ovElemento:= WebBrowser1.OleObject.Document.links;
ovElemento.item(38).click; // ********** AQUI FALLA ***************
ovElemento := WebBrowser1.OleObject.Document.forms.item(1).elements;
ovElemento.item(2).value := 'Texto a enviar''; // Pongo el texto que necesito en un TextArea
ovElemento.item(5).click; // Hago el Submit
end;
Seguramente será una tontería, o incluso de la página en cuestión, pero llevo dándole vueltas varios días y no consigo dar con la solución.
He comprobado que si antes del fallo interrumpo el programa, por ejemplo con un showmessage() , si me funciona. ¿¿??, pero con un sleep() no.
Gracias anticipadas.