Capturar pagina html y recuperar resultado

Re: Capturar pagina html y recuperar resultado

Postby Antonio Linares » Sat Oct 05, 2024 3:51 pm

Así funciona bien. Pruébalo por favor:

Code: Select all  Expand view  RUN
#include "FiveWin.ch"

static oWebView

function Main()

   local oWndMain, oWnd, cResult

   TEXT INTO cResult
      [ document.getElementById( 'vistaConsultaEstadoRUT:formConsultaEstadoRUT:primerNombre' ).innerHTML,
        document.getElementById( 'vistaConsultaEstadoRUT:formConsultaEstadoRUT:otrosNombres' ).innerHTML,
        document.getElementById( 'vistaConsultaEstadoRUT:formConsultaEstadoRUT:primerApellido' ).innerHTML,
        document.getElementById( 'vistaConsultaEstadoRUT:formConsultaEstadoRUT:segundoApellido' ).innerHTML,
        document.getElementById( 'vistaConsultaEstadoRUT:formConsultaEstadoRUT:estado' ).innerHTML,
        document.getElementById( 'vistaConsultaEstadoRUT:formConsultaEstadoRUT:dv' ).innerHTML ]
   ENDTEXT    

   DEFINE WINDOW oWndMain TITLE "Usando DIAN desde un webview" SIZE 1050, 700 MDI

   DEFINE WINDOW oWnd MDICHILD OF oWndMain

   oWebView = TWebView2():New( oWnd )
   oWebView:bOnNavigationCompleted = { | cUrl, hWebView | If( "sessionid" $ cUrl, oWebView:Eval( cResult ),) }

   oWebView:Navigate( "https://muisca.dian.gov.co/WebRutMuisca/DefConsultaEstadoRUT.faces" )
   oWebView:InjectJavascript( JavaScript() )
   // oWebView:OpenDevToolsWindow()
   oWebView:bOnEval = { | cJson, hWebView | If( cJson != "null" .and. cJson != "{}", ( MsgInfo( cJson ), oWnd:End() ),) }
   oWebView:Eval( "consultaDIAN( '79760202' )" )

   ACTIVATE WINDOW oWndMain CENTER ;
      ON RESIZE oWebView:SetSize( nWidth, nHeight )

   oWebView:End()

return nil

function Javascript()

   local cCode

   TEXT INTO cCode
      function consultaDIAN( numeroIdentificacion )
      {
         var inputNIT = document.getElementById('vistaConsultaEstadoRUT:formConsultaEstadoRUT:numNit');
         if (inputNIT) {
            inputNIT.value = numeroIdentificacion;
         } else {
            console.error('No se encontró el campo de entrada para el NIT');
            return;
         }    
         
         var botonBuscar = document.getElementById('vistaConsultaEstadoRUT:formConsultaEstadoRUT:btnBuscar');
         if (botonBuscar) {
            botonBuscar.click();
         } else {
            console.error('No se encontró el botón de búsqueda');
            return;
         }
      }
   ENDTEXT

return cCode
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Capturar pagina html y recuperar resultado

Postby Enrrique Vertiz » Sun Oct 06, 2024 2:38 am

Saludos Antonio

Abusando de que estas viendo esto, en Peru tenemos la SUNAT y es en su web que debemos consultar los datos de las empresas, si existen, si estan activas y si es Ok recuperar sus datos, la web de consulta es esta:
https://e-consultaruc.sunat.gob.pe/cl-t ... edaWeb.jsp
ahi un valor valido es mi RUC: 20508287781
como hago para pasando ese valor obtener los demas, que son: Numero de RUC (Incluye la razon social en este caso), Estado del Contribuyente, Condicion del Contribuyente y domicilio fiscal.
Trate de entender el ejemplo de Colombia, pero no veo como aplicarlo a este caso.
Gracias
Enrrique Vertiz Pitta
Lima-Peru
xHb 1.23.1026X, Fwh 24.09, BCC74, MySQL 8.0.X, SQLLIB 1.9m
Enrrique Vertiz
 
Posts: 548
Joined: Fri Oct 07, 2005 2:17 pm
Location: Lima - Peru

Re: Capturar pagina html y recuperar resultado

Postby Antonio Linares » Sun Oct 06, 2024 6:03 am

Estimado Enrique,

Aqui lo tienes. La forma de obtener los valores de cResult es usando la IA. Se le da todo el HTML y le preguntas a la IA como obtener determinado valor usando javascript :-)

webviewruc.prg
Code: Select all  Expand view  RUN
#include "FiveWin.ch"

static oWebView

function Main()

   local oWnd, cResult

   TEXT INTO cResult
      [ document.querySelector('.list-group-item:nth-child(1) .col-sm-7 h4.list-group-item-heading').textContent,
        document.querySelector('.list-group-item:nth-child(2) .col-sm-7 p').textContent,
        document.querySelector('.list-group-item:nth-child(3) .col-sm-7 p').textContent.trim(),
        document.querySelector('.list-group-item:nth-child(4) .col-sm-3:nth-child(2) p').textContent,
        document.querySelector('.list-group-item:nth-child(4) .col-sm-3:nth-child(4) p').textContent,
        document.querySelector('.list-group-item:nth-child(5) .col-sm-7 p').textContent.trim(),
        document.querySelector('.list-group-item:nth-child(6) .col-sm-7 p').textContent.trim(),
        document.querySelector('.list-group-item:nth-child(7) .col-sm-7 p').textContent.trim(),
        document.querySelector('.list-group-item:nth-child(8) .col-sm-3 p').textContent.trim(),
        document.querySelector('.list-group-item:nth-child(8) .col-sm-3:nth-child(4) p').textContent.trim(),
        document.querySelector('.list-group-item:nth-child(9) .col-sm-7 p').textContent.trim() ]
   ENDTEXT    

   DEFINE WINDOW oWnd TITLE "Usando SUNAT desde un webview" SIZE 1050, 700

   oWebView = TWebView2():New( oWnd )
   oWebView:bOnNavigationCompleted = { | cUrl, hWebView | If( "jcr" $ cUrl, oWebView:Eval( cResult ),) }

   oWebView:Navigate( "https://e-consultaruc.sunat.gob.pe/cl-ti-itmrconsruc/FrameCriterioBusquedaWeb.jsp" )
   oWebView:InjectJavascript( JavaScript() )
   // oWebView:OpenDevToolsWindow()
   oWebView:bOnEval = { | cJson, hWebView | If( cJson != "null" .and. cJson != "{}", ( MsgInfo( cJson ), oWnd:End() ),) }
   oWebView:Eval( "consultaRUC( '20508287781' )" )

   ACTIVATE WINDOW oWnd CENTER ;
      ON RESIZE oWebView:SetSize( nWidth, nHeight )

   oWebView:End()

return nil

function Javascript()

   local cCode

   TEXT INTO cCode
      function consultaRUC( cRUC )
      {
         var ruc = document.getElementById( 'txtRuc' );
         var btnAceptar = document.getElementById( 'btnAceptar' );  
         ruc.value = cRUC;
         btnAceptar.click();  
      }
   ENDTEXT

return cCode
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Capturar pagina html y recuperar resultado

Postby acrisostomo2017 » Sun Oct 06, 2024 1:58 pm

Hola a todos,

Probando el codigo en tiempo de ejecución lanza este error

Time from start: 0 hours 0 mins 6 secs
Error occurred at: 06/10/2024, 08:56:14
Error description: Error BASE/1005 Message not found: TWEBVIEW2:_BONNAVIGATIONCOMPLETED
Args:
[ 1] = O TWEBVIEW2

Esoy usando FWH2407 y compilando con VISUAL STUDIO para 64 BITS
Saludos
Jorge Antonio Crisóstomo
Lima Perú
Teléfono: +51 988460143
User avatar
acrisostomo2017
 
Posts: 7
Joined: Fri Dec 08, 2017 8:46 pm
Location: Lima Perú

Re: Capturar pagina html y recuperar resultado

Postby Enrrique Vertiz » Sun Oct 06, 2024 2:25 pm

Saludos Antonio

Funciona GRACIAS, cuando lo compilo solo (FWH 24.09 en 32Bits, BCC77 y xHb), esta todo Ok, pero cuando lo incluyo en mi sistema me sale el error abajo adjunto, alguna idea ??
Nota: debo mencionar que tube que comentar: METHOD SetWindowTheme( cSub, cIds ) INLINE _SetWindowTheme( ::hWnd, cSub, cIds ) porque me daba error al enlazar
Gracias

Application
===========
Path and name: D:\Gci\MySuite\MyContsys\MyContsys.EXE (32 bits)
Size: 3,689,984 bytes
Compiler version: xHarbour 1.2.3 Intl. (SimpLex) (Build 20201212)
FiveWin version: FWH 24.07
C compiler version: Borland/Embarcadero C++ 7.4 (32-bit)
Windows 11 64 Bits, version: 6.2, Build 9200

Time from start: 0 hours 0 mins 36 secs
Error occurred at: 06/10/2024, 09:18:01
Error description: Error BASE/1070 Error de argumento: ==
Args:
[ 1] = N 0
[ 2] = P 0xA60DD0C

Stack Calls
===========
Called from: .\source\classes\twebview2.prg => (b)WEBVIEW2_ONEVAL( 128 )
Called from: => ASCAN( 0 )
Called from: .\source\classes\twebview2.prg => WEBVIEW2_ONEVAL( 128 )
Called from: => WINRUN( 0 )
Called from: D:\Fwh\Fwh2407\source\classes\window.prg => TMDIFRAME:ACTIVATE( 1117 )
Called from: D:\Cv\contfive.prg => MAIN( 4353 )
Enrrique Vertiz Pitta
Lima-Peru
xHb 1.23.1026X, Fwh 24.09, BCC74, MySQL 8.0.X, SQLLIB 1.9m
Enrrique Vertiz
 
Posts: 548
Joined: Fri Oct 07, 2005 2:17 pm
Location: Lima - Peru

Re: Capturar pagina html y recuperar resultado

Postby cnavarro » Sun Oct 06, 2024 3:38 pm

El error de SetWindowTheme ocurre porque has de incluir la lib ( Borland ) uxtheme.lib en tu script de compilacion/linkado
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6552
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Capturar pagina html y recuperar resultado

Postby Antonio Linares » Sun Oct 06, 2024 6:45 pm

acrisostomo2017 wrote:Hola a todos,

Probando el codigo en tiempo de ejecución lanza este error

Time from start: 0 hours 0 mins 6 secs
Error occurred at: 06/10/2024, 08:56:14
Error description: Error BASE/1005 Message not found: TWEBVIEW2:_BONNAVIGATIONCOMPLETED
Args:
[ 1] = O TWEBVIEW2

Esoy usando FWH2407 y compilando con VISUAL STUDIO para 64 BITS

Necesitas la versión de FWH 24.09
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Capturar pagina html y recuperar resultado

Postby Antonio Linares » Sun Oct 06, 2024 6:47 pm

Enrrique Vertiz wrote:Saludos Antonio

Funciona GRACIAS, cuando lo compilo solo (FWH 24.09 en 32Bits, BCC77 y xHb), esta todo Ok, pero cuando lo incluyo en mi sistema me sale el error abajo adjunto, alguna idea ??
Nota: debo mencionar que tube que comentar: METHOD SetWindowTheme( cSub, cIds ) INLINE _SetWindowTheme( ::hWnd, cSub, cIds ) porque me daba error al enlazar
Gracias

Application
===========
Path and name: D:\Gci\MySuite\MyContsys\MyContsys.EXE (32 bits)
Size: 3,689,984 bytes
Compiler version: xHarbour 1.2.3 Intl. (SimpLex) (Build 20201212)
FiveWin version: FWH 24.07
C compiler version: Borland/Embarcadero C++ 7.4 (32-bit)
Windows 11 64 Bits, version: 6.2, Build 9200

Time from start: 0 hours 0 mins 36 secs
Error occurred at: 06/10/2024, 09:18:01
Error description: Error BASE/1070 Error de argumento: ==
Args:
[ 1] = N 0
[ 2] = P 0xA60DD0C

Stack Calls
===========
Called from: .\source\classes\twebview2.prg => (b)WEBVIEW2_ONEVAL( 128 )
Called from: => ASCAN( 0 )
Called from: .\source\classes\twebview2.prg => WEBVIEW2_ONEVAL( 128 )
Called from: => WINRUN( 0 )
Called from: D:\Fwh\Fwh2407\source\classes\window.prg => TMDIFRAME:ACTIVATE( 1117 )
Called from: D:\Cv\contfive.prg => MAIN( 4353 )

Estas usando ventanas MDI en tu aplicación ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Capturar pagina html y recuperar resultado

Postby leandro » Sun Oct 06, 2024 6:48 pm

Enrrique Vertiz wrote:Saludos Antonio

Funciona GRACIAS, cuando lo compilo solo (FWH 24.09 en 32Bits, BCC77 y xHb), esta todo Ok, pero cuando lo incluyo en mi sistema me sale el error abajo adjunto, alguna idea ??
Nota: debo mencionar que tube que comentar: METHOD SetWindowTheme( cSub, cIds ) INLINE _SetWindowTheme( ::hWnd, cSub, cIds ) porque me daba error al enlazar
Gracias

Application
===========
Path and name: D:\Gci\MySuite\MyContsys\MyContsys.EXE (32 bits)
Size: 3,689,984 bytes
Compiler version: xHarbour 1.2.3 Intl. (SimpLex) (Build 20201212)
FiveWin version: FWH 24.07
C compiler version: Borland/Embarcadero C++ 7.4 (32-bit)
Windows 11 64 Bits, version: 6.2, Build 9200

Time from start: 0 hours 0 mins 36 secs
Error occurred at: 06/10/2024, 09:18:01
Error description: Error BASE/1070 Error de argumento: ==
Args:
[ 1] = N 0
[ 2] = P 0xA60DD0C

Stack Calls
===========
Called from: .\source\classes\twebview2.prg => (b)WEBVIEW2_ONEVAL( 128 )
Called from: => ASCAN( 0 )
Called from: .\source\classes\twebview2.prg => WEBVIEW2_ONEVAL( 128 )
Called from: => WINRUN( 0 )
Called from: D:\Fwh\Fwh2407\source\classes\window.prg => TMDIFRAME:ACTIVATE( 1117 )
Called from: D:\Cv\contfive.prg => MAIN( 4353 )


Este es el mismo error que nosotros tenemos, también en el momento en que agregamos la función a la aplicación, por aparte funciona de manera correcta.
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1688
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: Capturar pagina html y recuperar resultado

Postby leandro » Sun Oct 06, 2024 6:49 pm

Antonio Linares wrote:Lo estás usando en un entorno MDI, tal vez esté relacionado

Lo curioso es por que el handle del webview vale cero...


Si correcto, usamos ambiente MDI
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1688
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: Capturar pagina html y recuperar resultado

Postby leandro » Sun Oct 06, 2024 6:53 pm

Antonio Linares wrote:Así funciona bien. Pruébalo por favor:

Code: Select all  Expand view  RUN
#include "FiveWin.ch"

static oWebView

function Main()

   local oWndMain, oWnd, cResult

   TEXT INTO cResult
      [ document.getElementById( 'vistaConsultaEstadoRUT:formConsultaEstadoRUT:primerNombre' ).innerHTML,
        document.getElementById( 'vistaConsultaEstadoRUT:formConsultaEstadoRUT:otrosNombres' ).innerHTML,
        document.getElementById( 'vistaConsultaEstadoRUT:formConsultaEstadoRUT:primerApellido' ).innerHTML,
        document.getElementById( 'vistaConsultaEstadoRUT:formConsultaEstadoRUT:segundoApellido' ).innerHTML,
        document.getElementById( 'vistaConsultaEstadoRUT:formConsultaEstadoRUT:estado' ).innerHTML,
        document.getElementById( 'vistaConsultaEstadoRUT:formConsultaEstadoRUT:dv' ).innerHTML ]
   ENDTEXT    

   DEFINE WINDOW oWndMain TITLE "Usando DIAN desde un webview" SIZE 1050, 700 MDI

   DEFINE WINDOW oWnd MDICHILD OF oWndMain

   oWebView = TWebView2():New( oWnd )
   oWebView:bOnNavigationCompleted = { | cUrl, hWebView | If( "sessionid" $ cUrl, oWebView:Eval( cResult ),) }

   oWebView:Navigate( "https://muisca.dian.gov.co/WebRutMuisca/DefConsultaEstadoRUT.faces" )
   oWebView:InjectJavascript( JavaScript() )
   // oWebView:OpenDevToolsWindow()
   oWebView:bOnEval = { | cJson, hWebView | If( cJson != "null" .and. cJson != "{}", ( MsgInfo( cJson ), oWnd:End() ),) }
   oWebView:Eval( "consultaDIAN( '79760202' )" )

   ACTIVATE WINDOW oWndMain CENTER ;
      ON RESIZE oWebView:SetSize( nWidth, nHeight )

   oWebView:End()

return nil

function Javascript()

   local cCode

   TEXT INTO cCode
      function consultaDIAN( numeroIdentificacion )
      {
         var inputNIT = document.getElementById('vistaConsultaEstadoRUT:formConsultaEstadoRUT:numNit');
         if (inputNIT) {
            inputNIT.value = numeroIdentificacion;
         } else {
            console.error('No se encontró el campo de entrada para el NIT');
            return;
         }    
         
         var botonBuscar = document.getElementById('vistaConsultaEstadoRUT:formConsultaEstadoRUT:btnBuscar');
         if (botonBuscar) {
            botonBuscar.click();
         } else {
            console.error('No se encontró el botón de búsqueda');
            return;
         }
      }
   ENDTEXT

return cCode


Nada mismo error

Image
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1688
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: Capturar pagina html y recuperar resultado

Postby Antonio Linares » Sun Oct 06, 2024 7:05 pm

Leandro,

Estás usando la 24.09 ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Capturar pagina html y recuperar resultado

Postby Antonio Linares » Sun Oct 06, 2024 7:08 pm

regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Capturar pagina html y recuperar resultado

Postby leandro » Sun Oct 06, 2024 7:29 pm

Antonio Linares wrote:Leandro,

Estás usando la 24.09 ?


Si correcto fw2409 64 bits
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1688
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: Capturar pagina html y recuperar resultado

Postby Enrrique Vertiz » Sun Oct 06, 2024 7:31 pm

cnavarro wrote:El error de SetWindowTheme ocurre porque has de incluir la lib ( Borland ) uxtheme.lib en tu script de compilacion/linkado


Gracias !!! colocando la LIB indicada desaparecio el mensaje de error
Enrrique Vertiz Pitta
Lima-Peru
xHb 1.23.1026X, Fwh 24.09, BCC74, MySQL 8.0.X, SQLLIB 1.9m
Enrrique Vertiz
 
Posts: 548
Joined: Fri Oct 07, 2005 2:17 pm
Location: Lima - Peru

PreviousNext

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 53 guests