Page 1 of 1

COMO ABRIR UNA WEB CON CHROME

Posted: Fri Dec 18, 2020 1:26 am
by CARLOS ATUNCAR
Muy Buenas noches,
necesito hacer una consulta a una pagina web y extraer los datos de esta pagina. todo mi codigo funciona el detalle que esta pagina no es compatible a Internet Explore y hay momentos q la consulta aparece sin datos y muy pocas con datos pero la misma consultada en Chrome si da resultados. como usar el Chrome. muchas gracias de antemano

Function TCambioSunat(nMes,nAno)
local oIe,WshShell,oDoc,nPos, oForm, oObj,cName,oElem,oWait
Local mResultado :={}
local cUrl := "https://e-consulta.sunat.gob.pe/cl-at-i ... tcS01Alias "
local mMes:= {"ene.","feb.","mar.","abr.","may.","jun.","jul.","ago.","sep.","oct.","nov.","dic."}
local cdia,cCompra,cVenta,lDia:=.F.

WaitOn("Espere, Iniciando conexion ...",@oWait )
SysRefresh()

HB_GCALL( .F. )

TRY
oIE:=CreateObject("InternetExplorer.Application")
CATCH oer
WaitOff( @oWait )
ShowError( oer )
MsgStop("Error al crear la conexion a internet","Error")
RETURN mResultado
END

WITH OBJECT oIE
:Visible := .F.
:ToolBar := .F.
:StatusBar := .F.
:MenuBar := .F.
:FullScreen := .F.
:Invoke( "Navigate", cURL )
END WITH

TRY
oIE:Navigate2( cUrl )
CATCH oErr
TRY
oIE:Navigate( cUrl )
CATCH oErro
END
END

WHILE oIE:Busy
SysWait(1)
SysRefresh()
Loop
END

HB_IDLESLEEP( 1 )
nPos:=0

WHILE oIE:ReadyState <> 4 .AND. nPos<20
HB_IDLESLEEP( 1 )
nPos++
END

IF nPos>=20
WaitOff( @oWait )
RETURN mResultado
ENDIF

SysWait(5)



oDoc:=oIE:Document()

oWait:Say(1,3,"Espere, Consultando periodo solicitado..."+Space(30) )
SysRefresh()
oDoc:All:Item("fecAsistenciaBusq",0):Value := mMes[Val(nMes)]+" "+nAno
oDoc:All:Item("btnBuscarAsistencias",0):Focus()
oDoc:All:Item("btnBuscarAsistencias",0):Click()

WHILE oIE:ReadyState <> 4 .AND. nPos<20
HB_IDLESLEEP( 1 )
nPos++
END

IF nPos>=20
WaitOff( @oWait )
RETURN mResultado
ENDIF

SysRefresh()

HB_IDLESLEEP( 2 )

TRY
*cCode := oIE:Document:body:innerHtml()
cCode := oIE:Document:body:innerText()
CATCH oError
WaitOff( @oWait )
RETURN mResultado
END

nLine:= MLCOUNT(cCode,,3,.t.)

iLinea := 0
For a:= 1 To nLine
SysRefresh()
linetxt:=Rtrim(memoline(cCode,80,a,3,.t.))
If Left(Rtrim(linetxt),6)="Sábado"
iLinea := a+1
Exit
EndIf
Next

ntxt:=""
ltcambio := .F.

otxt:=FCreate( op:temp+"tcambio.txt" )

For a:=iLinea TO nLine
oWait:Say( 1,3,"Espere, Convirtiendo response..."+Space(30) )
SysRefresh()

linetxt:=Rtrim(memoline(cCode,80,a,3,.t.))

If Left(Rtrim(linetxt),5)="Notas"
Exit
EndIf
If Left(Rtrim(linetxt),10)!=Space(10)
ntxt := Rtrim(memoline(cCode,80,a,3,.t.))
FWRITE(otxt,ntxt+CRLF )
EndIf
Next

FCLOSE( otxt )

cCode := Memoread(op:temp+"tcambio.txt" )

nLine:= MLCOUNT(cCode,,3,.t.)


For a:=1 TO nLine
oWait:Say( 1,3,"Espere, Extrayendo response..."+Space(30) )
SysRefresh()

linetxt:=Rtrim(memoline(cCode,80,a,3,.t.))

If IsDigit(Alltrim(Left( linetxt,2 )))
cDia :=Alltrim(Left( linetxt,2 ))
lDia := .T.
ElseIf !IsDigit(Alltrim(Left( linetxt,2 )))
If Left(linetxt,6)="Compra"
cCompra := Val(StrTran( Alltrim(linetxt),"Compra","" ))
Else
cVenta := Val(StrTran( Alltrim(linetxt),"Venta","" ))
lDia :=.F.
xfecha := ctod(StrZero(Val(cDia),2)+"/"+nMes+"/"+nAno )
Aadd(mResultado,{xfecha,cCompra,cventa})
Endif
EndIf
Next

oIE:Visible:=.F.
oIE:Quit()

WaitOff( @oWait )


RETURN mresultado

Re: COMO ABRIR UNA WEB CON CHROME

Posted: Sat Dec 19, 2020 7:19 am
by anserkk
You can open Web on Chrome using the following code

Code: Select all

//----------------------------------------------------------------------------//
Function Main()
    Local oShell
    
    oShell:=CreateObject("WScript.Shell")
    oShell:Run("chrome.exe")
    oScript&#058;sleep( 100 )
    oShell:sendkeys( "www.google.com" )
    oShell:sendkeys( "{ENTER}" )
   
Return NIL
I do not know whether Chrome can be used just like IE to meet your requirement

Re: COMO ABRIR UNA WEB CON CHROME

Posted: Sat Dec 19, 2020 11:54 pm
by CARLOS ATUNCAR
SI NO RESPONDE A LOS COMANDOS