Jump to content


Photo

Webbrowser no accede a ciertos datos en pagina


Best Answer Caral , 22 December 2018 - 04:51 PM

Hola

después de perder mucho tiempo llegue a la solución, tonta de un inexperto pero tenia que ser asi.

Tuve que pasar por::

pensar en html5 ( no era el problema)

Java ( que bueno que no )

problema con el componente webbrowser ( no )

tratar con el componente mozilla Firefox (no sirve para nada)

tratar con el componente Componente Ghrome ( es mas complicado que java)

pues resulta que la pagina en cuestión pedía un dato tipo float y se lo daba entero, increíblemente solo decía del error pero no cual.

asi las cosas pues solucionado.

gracias a todos por vuestros aportes.

Saludos

Go to the full post


  • Please log in to reply
10 replies to this topic

#1 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4266 posts
  • LocationCosta Rica

Posted 19 December 2018 - 07:35 PM

Hola a todos

Estoy haciendo un programa que accede a una pagina web, se relaciona con ella.

El asunto es que uso webbrowser y va mas o menos bien pero ha llegado a un punto en que no me deja 

al tocar un boton me da un error, sin embargo con chrome no.

He leido que es un asunto del hhml5 a algo asi,

 

Que puedo hacer ?

El webbrowser lo manejo mas o menos bien, alguna solucion que no me complique mucho ?

 

Saludos


  • 0

#2 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4266 posts
  • LocationCosta Rica

Posted 20 December 2018 - 06:26 AM

Hola
Para aclarar mas el error que menciono es de la pagina
Dice : se ha producido un problema comuniquese con el administrador.
En el programa de delphi no tengo errores.
Por eso supongo que tiene que ver con algo del navegador ya que fuera del programa en Chrome no me dice o no me da ese problema.
Saludos
  • 0

#3 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4266 posts
  • LocationCosta Rica

Posted 21 December 2018 - 12:24 PM

Hola

El problema esta en esta parte ( la de la foto)

Una vez que se presiona el boton de guardar sale el anuncio de que ocurrio un error ( en la pagina , no en delphi).

Me da la impresion de que como copia los datos y los coloca en esa casilla que sigue por ahi esta pasando algo,

Que sera

Saludos

 

Attached Files


  • 0

#4 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14448 posts
  • LocationMéxico

Posted 21 December 2018 - 03:37 PM

Hola

El problema esta en esta parte ( la de la foto)

Una vez que se presiona el boton de guardar sale el anuncio de que ocurrio un error ( en la pagina , no en delphi).

Me da la impresion de que como copia los datos y los coloca en esa casilla que sigue por ahi esta pasando algo,

Que sera

Saludos

 

No tengo idea amigo, supera mi conocimiento :(

 

Saludos


  • 0

#5 pcicom

pcicom

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 267 posts
  • LocationMéxico

Posted 21 December 2018 - 09:39 PM

Falta que indiques que version de delphi utilizar, ya que en versiones anteriores el twebbrowser esta limitado y en html5 no funciona por problemas de compatibilidad con javascript...

Encontre este link para ejecutar scripts en javascript, aun no lo he probado, habria que checar si puede de alguna forma solucionar tu problema

 

http://delphidabbler...cles?article=21

 

Saludos.


  • 0

#6 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4266 posts
  • LocationCosta Rica

Posted 22 December 2018 - 01:24 PM

Hola

Gracias por responder

Estoy usando delphi community edition.

Vi el tutorial, pero no se como implementarlo, me pierdo con java.

Cuando el tutorial dice:

 

Supongamos también que el documento HTML define una función de JavaScript llamada foo () que toma una cadena y un parámetro entero. 

 

Ya me perdi, como se que el javascrip tiene una llamado foo () ?

 

Saludos


  • 0

#7 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4266 posts
  • LocationCosta Rica

Posted 22 December 2018 - 01:35 PM

Hola

Pensando en lo que dijiste del webbrowser y de la compatibilidad hice una prueba

quite el que usaba y puse el nuevo de este delphi

sorpresa el programa se pega, no carga bien.

que sera, ni idea, se supone son iguales solo que este mas nuevo.

Saludos


  • 0

#8 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4266 posts
  • LocationCosta Rica

Posted 22 December 2018 - 04:51 PM   Best Answer

Hola

después de perder mucho tiempo llegue a la solución, tonta de un inexperto pero tenia que ser asi.

Tuve que pasar por::

pensar en html5 ( no era el problema)

Java ( que bueno que no )

problema con el componente webbrowser ( no )

tratar con el componente mozilla Firefox (no sirve para nada)

tratar con el componente Componente Ghrome ( es mas complicado que java)

pues resulta que la pagina en cuestión pedía un dato tipo float y se lo daba entero, increíblemente solo decía del error pero no cual.

asi las cosas pues solucionado.

gracias a todos por vuestros aportes.

Saludos


  • 1

#9 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14448 posts
  • LocationMéxico

Posted 24 December 2018 - 10:17 AM

Hola

después de perder mucho tiempo llegue a la solución, tonta de un inexperto pero tenia que ser asi.

Tuve que pasar por::

pensar en html5 ( no era el problema)

Java ( que bueno que no )

problema con el componente webbrowser ( no )

tratar con el componente mozilla Firefox (no sirve para nada)

tratar con el componente Componente Ghrome ( es mas complicado que java)

pues resulta que la pagina en cuestión pedía un dato tipo float y se lo daba entero, increíblemente solo decía del error pero no cual.

asi las cosas pues solucionado.

gracias a todos por vuestros aportes.

Saludos

 

Vaya que bien, lo anotamos como RESUELTO para futuras consultas  (y)

 

Saludos


  • 0

#10 pcicom

pcicom

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 267 posts
  • LocationMéxico

Posted 27 December 2018 - 09:18 AM

Hola

Gracias por responder

Estoy usando delphi community edition.

Vi el tutorial, pero no se como implementarlo, me pierdo con java.

Cuando el tutorial dice:

 

Supongamos también que el documento HTML define una función de JavaScript llamada foo () que toma una cadena y un parámetro entero. 

 

Ya me perdi, como se que el javascrip tiene una llamado foo () ?

 

Saludos

 

Saludos..

 

por si te sirve con el codigo ejemplo del link que te proporcione, es posible el llenado de datos de formularios WEB y adicionalmente se puede inyectar codigo JAVASCRIPT para realizar cualquier tarea en la pagina.

 

Por ejemplo  puedes llenar formularios mediante codigo

 

pagina web

 


php
  1. <html>
  2. <head>
  3.  
  4. <script>
  5. function DoEval(expr){
  6. // eval for delphi!
  7.   document.getElementById('result').value=eval(expr);
  8. }
  9.  
  10. function setData(cField,cData){
  11. document.getElementById(cField).value = cData;
  12. }
  13.  
  14. function clickSEND(){
  15. var cValor;
  16. cValor = document.getElementById('datonuevo').value;
  17.  
  18. alert(cValor);
  19. }
  20.  
  21. function clickBOTON(cBottonName){
  22.     var btn;
  23. btn = document.getElementById(cBottonName);
  24. btn.click();
  25. }
  26.  
  27. </script>
  28.  
  29. </head>
  30. <body>
  31.  
  32. <input type='hidden' id='result' value=''>Type something here:
  33. <br><input type='text' id='something' value='Hi there!!'>
  34. <br><br>
  35. <br><input type='text' name="datonuevo" id='datonuevo' value='?'>
  36. <br><br>To get the above text, type the following code in the below text box:
  37. <textarea style='width:100%; height:30px;' readonly>
  38. document.getElementById('something').value;
  39. </textarea>
  40. <BR>
  41. <button id="miBoton1" onclick="clickSEND();">ENVIAR</button>
  42. <BR>
  43. <a id="linkBoton1" onclick="clickSEND();">Link Button</a>
  44. <BR>
  45. </body>
  46. </html>

 

Mediante DELPHI puedes llenar el formulario y/o ejecutar funciones como CLICK a botonoes dentro de la pagina WEB algo asi..

 

 

 

php
  1.   try
  2.  
  3.     // ejecuta la funcion setData  pasando los parametros para llenar algun dato del formulario,   setData(<idElemento>,<valoraAsignar>)
  4.     ExecuteJavaScript(WebBrowser1,'setData("datonuevo","HellBoy");');
  5.  
  6.   except
  7.     on E:Exception do ConsoleRed(E.Message);
  8.   end;

 

Y ejecutar funciones o hacer click a elementos de la pagina como:

 

 


php
  1.   try
  2.  
  3.     ExecuteJavaScript(WebBrowser1,'clickBOTON("miBoton1");');
  4.  
  5.   except
  6.     on E:Exception do ConsoleRed(E.Message);
  7.   end;

Y para inyectar codigo a una pagina WEB, suponiendo que quieres llenar datos con las mismas funciones setData clickBoton,    en el siguiente ejemplo se supone que las funciones inyectadas no existen en el codigo de la pagina..

 

Osea HolaMundo y setData no deben de existir en la pagina en la que probarias el codigo..


php
  1. procedure TForm1.Button7Click(Sender: TObject);
  2. var
  3.   Doc2     : IHtmlDocument2;
  4.   Script   : IHtmlDOMNode;
  5.   HTMLWindow: IHTMLWindow2;
  6.   jsloader : TStringList;
  7. begin
  8.   Doc2 := Webbrowser1.Document as IHtmlDocument2;
  9.   if Assigned(Doc2.body) then
  10.   begin
  11.      Script := Doc2.createElement('script') as IHTMLDOMNode;
  12.      jsloader := TStringList.Create();
  13.      jsloader.Add('function clickBOTON(cBottonName){ ');
  14.      jsloader.Add('   var btn;');
  15.      jsloader.Add('   btn = document.getElementById(cBottonName);');
  16.      jsloader.Add('   btn.click();');
  17.      jsloader.Add('}');
  18.      jsloader.Add('function setData(cField,cData){');
  19.      jsloader.Add(' document.getElementById(cField).value = cData;');
  20.      jsloader.Add('}');
  21.      jsloader.Add('function HolaMundo(){ ');
  22.      jsloader.Add(' alert("Hola Mundo");');
  23.      jsloader.Add('}');
  24.  
  25.      (Script as IHTMLScriptElement).text := jsloader.GetText();
  26.      (Doc2.body as IHtmlDomNode).appendChild(Script);
  27.      HTMLWindow := Doc2.parentWindow;
  28.      if Assigned(HTMLWindow) then
  29.      begin
  30.          // Ejecuta funcion inyectada HolaMundo
  31.          HTMLWindow.execScript('HolaMundo();', 'JavaScript');
  32.          
  33.          // Ejecuta boton submit de la forma en la pagina web
  34.          HTMLWindow.execScript('clickBOTON("submit");', 'JavaScript');
  35.      end;
  36.   end;
  37.  


Edited by pcicom, 27 December 2018 - 09:28 AM.

  • 1

#11 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4266 posts
  • LocationCosta Rica

Posted 02 January 2019 - 03:39 PM

Muchas gracias por vuestra ayuda

Saludos


  • 0




IP.Board spam blocked by CleanTalk.