Ir al contenido



Foto

Webbrowser no accede a ciertos datos en pagina


Mejor respuesta Caral , 22 diciembre 2018 - 04:51

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

Ir al mensaje completo


  • Por favor identifícate para responder
10 respuestas en este tema

#1 Caral

Caral

    Advanced Member

  • Administrador
  • 4.241 mensajes
  • LocationCosta Rica

Escrito 19 diciembre 2018 - 07:35

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

  • Administrador
  • 4.241 mensajes
  • LocationCosta Rica

Escrito 20 diciembre 2018 - 06:26

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

  • Administrador
  • 4.241 mensajes
  • LocationCosta Rica

Escrito 21 diciembre 2018 - 12:24

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

 

Archivos adjuntos


  • 0

#4 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.019 mensajes
  • LocationMéxico

Escrito 21 diciembre 2018 - 03:37

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
  • 261 mensajes
  • LocationMéxico

Escrito 21 diciembre 2018 - 09:39

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

  • Administrador
  • 4.241 mensajes
  • LocationCosta Rica

Escrito 22 diciembre 2018 - 01:24

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

  • Administrador
  • 4.241 mensajes
  • LocationCosta Rica

Escrito 22 diciembre 2018 - 01:35

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

  • Administrador
  • 4.241 mensajes
  • LocationCosta Rica

Escrito 22 diciembre 2018 - 04:51   Mejor respuesta

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
  • 14.019 mensajes
  • LocationMéxico

Escrito 24 diciembre 2018 - 10:17

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
  • 261 mensajes
  • LocationMéxico

Escrito 27 diciembre 2018 - 09:18

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.  


Editado por pcicom, 27 diciembre 2018 - 09:28 .

  • 1

#11 Caral

Caral

    Advanced Member

  • Administrador
  • 4.241 mensajes
  • LocationCosta Rica

Escrito 02 enero 2019 - 03:39

Muchas gracias por vuestra ayuda

Saludos


  • 0