#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include ; needed for get source (hmtl) #include #include "wd_helper.au3" #include "wd_capabilities.au3" #include "wd_cdp.au3" #include "wd_core.au3" Opt("MouseClickDownDelay", 50) Global $calc = True Global $loop = True Global $conf_div = True Global $term_func = True Global $conf_num_base = True Global $conf_num_base2 = True Global $teste_not = True Global $lista_empresas[] Global $vezes[] Global $data = StringSplit(_NowCalcDate(), "/") Global $ano = $data[1] Global $mes Global $ult_dia Global $cont1 = 0 Global $cont2 = 2 Global $cont3 = 0 Global $cont4 = 0 Global $cont5 = 0 Global $codigos [] Global $oExcel = _Excel_Open() Global $ult_dia = _DateDaysInMonth(@YEAR, @MON-1) Global $prox_loop = True Global $num_base_def = 0 Global $num_base_aux[] Global $pos = 0 Global $num_base = 0 Global $num_base2 = 0 Global $js_1 = "" If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookOpen Example", "Error creating the Excel application object." & @CRLF & "@error = " & @error & ", @extended = " & @extended) If $data[2] == "01" Then $mes = 12 Else $mes = "0"&$data[2]-1 EndIf Local $sWorkbook = "Z:\Dados\Codigos_prefeitura.xlsx" Local $oWorkbook = _Excel_BookOpen($oExcel, $sWorkbook) If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_BookOpen Example 1", "Error opening '" & $sWorkbook & "'." & @CRLF & "@error = " & @error & ", @extended = " & @extended) Sleep(2000) While _Excel_RangeRead($oWorkbook, Default, "A"&$cont2, 1) <> "" If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeRead Example 2", "Error reading from workbook." & @CRLF & "@error = " & @error & ", @extended = " & @extended) $aResult = _Excel_RangeRead($oWorkbook, Default, "A"&$cont2, 1) $lista_empresas[$cont1] = $aResult $cont2 = $cont2+1 $cont1 = $cont1+1 WEnd chrome_driver() Func chrome_driver() #Region ; specify driver, port and other options _WD_Option('Driver', 'chromedriver.exe') _WD_Option('Port', 9515) _WD_Option('DriverParams', '--verbose --log-path="' & @ScriptDir & '\chrome.log"') ; start the driver _WD_Startup() If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's ; create capabilites for session _WD_CapabilitiesStartup() _WD_CapabilitiesAdd('alwaysMatch', 'chrome') _WD_CapabilitiesAdd('w3c', True) _WD_CapabilitiesAdd('excludeSwitches', 'enable-automation') Local $sCapabilities = _WD_CapabilitiesGet() ; create session with given Capabilities Global $WD_SESSION = _WD_CreateSession($sCapabilities) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's #EndRegion ; initialize webdriver sesion #Region ; do your's stuff ; navigate to some website Global $sURL = 'https://grp.santacruz.rs.gov.br/grp/acessoexterno/programaAcessoExterno.faces?codigo=70241' _WD_Navigate($WD_SESSION, $sURL) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's ; wait for loading process ends _WD_LoadWait($WD_SESSION, 1000) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's ; for example find element Global $sXPath = "//*[@id='form:divContainerAcoes']/div[2]" Global $sElement = _WD_FindElement($WD_SESSION, $_WD_LOCATOR_ByXPath, $sXPath) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_ElementAction($WD_SESSION, $sElement, 'click') If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) $sXPath = "//*[@id='form:identificacao']" $sElement = _WD_FindElement($WD_SESSION, $_WD_LOCATOR_ByXPath, $sXPath) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) _WD_SetElementValue($WD_SESSION, $sElement, "") If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) $sXPath = "//*[@id='form:senha']" $sElement = _WD_FindElement($WD_SESSION, $_WD_LOCATOR_ByXPath, $sXPath) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_SetElementValue($WD_SESSION, $sElement, "") If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) $sXPath = "//*[@id='form:buttonValidar']" $sElement = _WD_FindElement($WD_SESSION, $_WD_LOCATOR_ByXPath, $sXPath) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_ElementAction($WD_SESSION, $sElement, 'click') If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's Sleep(1000) MouseClick($MOUSE_CLICK_LEFT, 900, 365, 2, 10) Sleep(2000) for $unidade In $lista_empresas $loop = True $prox_loop = True While($loop == True) _WD_LoadWait($WD_SESSION, 1000) $sXPath = "//*[@id='form:identificacaoRequerente:select']" $sElement = _WD_FindElement($WD_SESSION, $_WD_LOCATOR_ByXPath, $sXPath) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_SetElementValue($WD_SESSION, $sElement, $unidade, 1) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) Sleep(1000) $sXPath = "//*[@id='form:competencia:fieldAnoMes:field']" $sElement = _WD_FindElement($WD_SESSION, $_WD_LOCATOR_ByXPath, $sXPath) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_ElementAction($WD_SESSION, $sElement, 'click') If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_SetElementValue($WD_SESSION, $sElement, "") If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) Sleep(1000) _WD_SetElementValue($WD_SESSION, $sElement, $ano&'/'&$mes) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) Sleep(1000) If conf_sem_nota() Then $prox_loop = False ExitLoop EndIf _WD_LoadWait($WD_SESSION, 1000) ver_nota_2() ;$pos = (UBound($vezes))-1 ;If $conf_div == False Then ;for $num In $vezes _WD_LoadWait($WD_SESSION, 1000) Sleep(1000) #comments-start If $cont4 == 0 Then _WD_SetElementValue($WD_SESSION, $sElement, $ult_dia&$mes&$ano) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) Sleep(1000) Else _WD_SetElementValue($WD_SESSION, $sElement, $vezes[$cont4+1]&$mes&$ano) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) Sleep(1000) EndIf _WD_SetElementValue($WD_SESSION, $sElement, $pos&$mes&$ano) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) Sleep(1000) $sXPath = "//*[@id='form:j_id_3u:0:j_id_3y']" $sElement = _WD_FindElement($WD_SESSION, $_WD_LOCATOR_ByXPath, $sXPath) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_ElementAction($WD_SESSION, $sElement, 'click') If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) Sleep(1000) $sXPath = "//*[@id='form:j_id_4s_2_2_1']/span" $sElement = _WD_FindElement($WD_SESSION, $_WD_LOCATOR_ByXPath, $sXPath) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_ElementAction($WD_SESSION, $sElement, 'click') If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) Sleep(1000) download() #comments-end ;$cont4 = $cont4 + 1 ;Next #comments-start $sXPath = "//*[@id='form:intervaloDatasCalendar:dataCalendario1InputDate']" $sElement = _WD_FindElement($WD_SESSION, $_WD_LOCATOR_ByXPath, $sXPath) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_ElementAction($WD_SESSION, $sElement, 'click') If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) Sleep(1000) _WD_SetElementValue($WD_SESSION, $sElement, " ") If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) Sleep(1000) _WD_SetElementValue($WD_SESSION, $sElement, "01"&$mes&$ano) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) Sleep(1000) $sXPath = "//*[@id='form:intervaloDatasCalendar:dataCalendario2InputDate']" $sElement = _WD_FindElement($WD_SESSION, $_WD_LOCATOR_ByXPath, $sXPath) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_ElementAction($WD_SESSION, $sElement, 'click') If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) Sleep(1000) _WD_SetElementValue($WD_SESSION, $sElement, " ") If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) Sleep(1000) _WD_SetElementValue($WD_SESSION, $sElement, ($vezes[$cont4-1])&$mes&$ano) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) Sleep(2000) $sXPath = "//*[@id='form:j_id_3u:0:j_id_3y']" $sElement = _WD_FindElement($WD_SESSION, $_WD_LOCATOR_ByXPath, $sXPath) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_ElementAction($WD_SESSION, $sElement, 'click') If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) Sleep(1000) $sXPath = "//*[@id='form:j_id_4s_2_2_1']/span" $sElement = _WD_FindElement($WD_SESSION, $_WD_LOCATOR_ByXPath, $sXPath) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_ElementAction($WD_SESSION, $sElement, 'click') If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) Sleep(1000) download() #comments-end $prox_loop = False ;EndIf $loop = False WEnd $sXPath = "//*[@id='form:intervaloDatasCalendar:dataCalendario1InputDate']" $sElement = _WD_FindElement($WD_SESSION, $_WD_LOCATOR_ByXPath, $sXPath) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_ElementAction($WD_SESSION, $sElement, 'click') If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) Sleep(2000) _WD_SetElementValue($WD_SESSION, $sElement, " ") If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) Sleep(2000) $sXPath = "//*[@id='form:intervaloDatasCalendar:dataCalendario2InputDate']" $sElement = _WD_FindElement($WD_SESSION, $_WD_LOCATOR_ByXPath, $sXPath) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_ElementAction($WD_SESSION, $sElement, 'click') If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) Sleep(2000) _WD_SetElementValue($WD_SESSION, $sElement, " ") If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) Sleep(2000) $cont4 = 0 $conf_div = True Next #EndRegion #Region ;Clean Up _WD_DeleteSession($WD_SESSION) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_Shutdown() If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's #EndRegion EndFunc Func download() MouseClick($MOUSE_CLICK_LEFT, 937, 170, 1, 10) Sleep(2000) Send("^l") Sleep(2000) Send("C:\relatorios") Sleep(2000) Send("{ENTER}") Sleep(2000) Send("^l") Sleep(2000) Send("{ENTER}") Sleep(2000) Send("{ENTER}") Sleep(5000) MouseClick($MOUSE_CLICK_LEFT, 937, 65, 1, 10) Sleep(2000) $sXPath = "//*[@id='j_id_1t:j_id_26']" $sElement = _WD_FindElement($WD_SESSION, $_WD_LOCATOR_ByXPath, $sXPath) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_ElementAction($WD_SESSION, $sElement, 'click') If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's EndFunc Func ver_nota_2() $calc = True $conf_num_base = True $num_base = _DateDaysInMonth(@YEAR, @MON-1) $num_base2 = _DateDaysInMonth(@YEAR, @MON-1) $cont3 = 0 while $calc == True $teste_not = conf_sem_nota() if $teste_not == False Then $sXPath = "//*[@id='form:tabelaNotas:dataTable:0:n']" $sElement = _WD_FindElement($WD_SESSION, $_WD_LOCATOR_ByXPath, $sXPath) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_ElementAction($WD_SESSION, $sElement, 'click') If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) Sleep(1000) $sXPath = "//*[@id='form:j_id_4s_3_2_1']/span" $sElement = _WD_FindElement($WD_SESSION, $_WD_LOCATOR_ByXPath, $sXPath) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_ElementAction($WD_SESSION, $sElement, 'click') If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) Sleep(1000) download() $calc = False Else ExitLoop EndIf WEnd EndFunc Func ver_nota() $calc = True $num_base = 5 $num_base2 = 1 $cont3 = 0 $conf_num_base = True $conf_num_base2 = True While $calc == True If $cont4 == 3 Then $calc = False ExitLoop EndIf $sXPath = "//*[@id='form:j_id_3u:0:j_id_3y']" $sElement = _WD_FindElement($WD_SESSION, $_WD_LOCATOR_ByXPath, $sXPath) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_ElementAction($WD_SESSION, $sElement, 'click') If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) Sleep(1000) $sXPath = "//*[@id='form:j_id_4s_2_2_1']/span" $sElement = _WD_FindElement($WD_SESSION, $_WD_LOCATOR_ByXPath, $sXPath) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_ElementAction($WD_SESSION, $sElement, 'click') If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) Sleep(1000) $sXPath = "//*[@id='formMensagens:mensagens']/div" $sElement = _WD_FindElement($WD_SESSION, $_WD_LOCATOR_ByXPath, $sXPath) If (_WD_FindElement($WD_SESSION, $_WD_LOCATOR_ByXPath, $sXPath) <> "" And _WD_FindElement($WD_SESSION, $_WD_LOCATOR_ByXPath, $sXPath) <> Null And _WD_ElementStyle($WD_SESSION, $sElement, "display") <> "none") Then $sXPath = "//*[@id='formMensagens:mensagens']/div/div/div[2]/img[1]" $sElement = _WD_FindElement($WD_SESSION, $_WD_LOCATOR_ByXPath, $sXPath) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_ElementAction($WD_SESSION, $sElement, 'click') If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's If $cont3 == 1 And $cont4 == 1 Then $term_func = False ExitLoop EndIf If $cont3 == 0 And $cont4 > 1 Then $term_func = False ExitLoop EndIf if $cont4 == 0 Then coloca_data($num_base2, $num_base) EndIf $sXPath = "//*[@id='form:j_id_3u:0:j_id_3y']" $sElement = _WD_FindElement($WD_SESSION, $_WD_LOCATOR_ByXPath, $sXPath) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_ElementAction($WD_SESSION, $sElement, 'click') If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) Sleep(1000) if $cont4 <> 0 Then coloca_data($num_base2, $num_base/2) download() $cont3 = 0 $num_base2 = ($num_base/2)+1 EndIf Else $sXPath = "//*[@id='j_id_1t:j_id_26']" $sElement = _WD_FindElement($WD_SESSION, $_WD_LOCATOR_ByXPath, $sXPath) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_ElementAction($WD_SESSION, $sElement, 'click') If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) Sleep(1000) $num_base = Floor($num_base*2) If $num_base < 10 And $conf_num_base == True Then $conf_num_base = False EndIf If $num_base2 < 10 And $conf_num_base2 == True Then $conf_num_base2 = False EndIf _WD_LoadWait($WD_SESSION, 1000) Sleep(1000) EndIf $cont3 = $cont3 + 1 $cont4 = $cont4 + 1 WEnd If $term_func == False Then Return False Else Return True EndIf EndFunc Func coloca_data($data1, $data2) if $data1 < 10 Then $data1 = "0"&$data1 EndIf if $data2 < 10 Then $data2 = "0"&$data2 EndIf $sXPath = "//*[@id='form:intervaloDatasCalendar:dataCalendario1InputDate']" $sElement = _WD_FindElement($WD_SESSION, $_WD_LOCATOR_ByXPath, $sXPath) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_ElementAction($WD_SESSION, $sElement, 'click') If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) Sleep(1000) _WD_SetElementValue($WD_SESSION, $sElement, " ") If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) Sleep(1000) _WD_SetElementValue($WD_SESSION, $sElement, $data1&$mes&$ano) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) Sleep(1000) $sXPath = "//*[@id='form:intervaloDatasCalendar:dataCalendario2InputDate']" $sElement = _WD_FindElement($WD_SESSION, $_WD_LOCATOR_ByXPath, $sXPath) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_ElementAction($WD_SESSION, $sElement, 'click') If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) Sleep(1000) _WD_SetElementValue($WD_SESSION, $sElement, " ") If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) Sleep(1000) _WD_SetElementValue($WD_SESSION, $sElement, $data2&$mes&$ano) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) Sleep(1000) EndFunc Func conf_sem_nota() $sXPath = "//*[@id='form:j_id_3u:0:j_id_3y']" $sElement = _WD_FindElement($WD_SESSION, $_WD_LOCATOR_ByXPath, $sXPath) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_ElementAction($WD_SESSION, $sElement, 'click') If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_LoadWait($WD_SESSION, 1000) Sleep(1000) $sXPath = "//*[@id='formMensagens:mensagens']/div/div/div[2]" $sElement = _WD_FindElement($WD_SESSION, $_WD_LOCATOR_ByXPath, $sXPath) If (_WD_FindElement($WD_SESSION, $_WD_LOCATOR_ByXPath, $sXPath) <> "" And _WD_FindElement($WD_SESSION, $_WD_LOCATOR_ByXPath, $sXPath) <> Null) Then If (_WD_ElementStyle($WD_SESSION, $sElement, "display") <> "none") Then _WD_LoadWait($WD_SESSION, 1000) Sleep(1000) $sXPath = "//*[@id='formMensagens:mensagens']/div/div/div[2]/img[1]" $sElement = _WD_FindElement($WD_SESSION, $_WD_LOCATOR_ByXPath, $sXPath) If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's _WD_ElementAction($WD_SESSION, $sElement, 'click') If @error Then Return SetError(@error, @extended, 0) ; always remember to check and handle error's Return True EndIf EndIf return False EndFunc