Jump to content

Boogerman

Membros
  • Content count

    22
  • Joined

  • Last visited

  • Days Won

    2

Everything posted by Boogerman

  1. Olá pessoas, Trabalho como testador e fiz alguns executáveis que rodam vários testes de um sistema que trabalho, rodos esses testes em um servido remoto via wts, porem, só consigo rodar se o wts estiver aberto e na tela, caso eu minimize a tela do wts o script continua rodando mas as validações não funcionam. As validações são simples, algumas se a tela esperada esta aberta, outras se imagem especifica aprece na tela (uso o imagesearch), Existe alguma forma de eu colocar para rodar e fechar ou minimizar o acesso e continuar rodando sem quebrar as validações? Segue exemplo de validações: ;-----Validação simples de tela de faturamento. ;---1º Verifica se tela de faturamento abre após pedido ---- Opt("WinTitleMatchMode", 2) ;Informar para que valide tela que nome contenha o texto - 1=start, 2=subStr, 3=exact, 4=advanced, -1 to -4=Nocase Local $tela = ("Faturamento") ; nome tela da ação WinWaitActive($tela, "", 5) ; tempo de espera pela tela If WinActivate($tela) Then ; caso tela aberta ControlClick($tela, "", "[CLASS:TcxCustomInnerTextEdit; INSTANCE:1]") ; clica no botão de faturar Else validatelaerros($tela, $linha) EndIf ;----2º Verifica se nota fiscal e apresentada pelo logo do cliente -------------- Global $y1 = 0, $x1 = 0 Global $imagem = _WaitForImageSearch('logocliente.bmp', 10, 0, $x1, $y1, 0) ; Valida se imagem do logo do cliente e apresentada na fatura If $imagem Then send ("{ESC}") Sleep (1000) Send("!+{F4}") ; Alt F4 para fechar danfe Else validatelaerros($tela, $linha) EndIf ;--------3º Informa no log que rodou sem erros ---------- rodou_sem_erros() ;--- funções (a do image search segue anexo com dll que tem de estar no windows) --- Func validatelaerros($tela, $linha) Global $caminhoprint = ("C:\Erros Automação\") _ScreenCapture_Capture($caminhoprint & @ScriptName & ".jpg") ProcessClose("sistema.exe") _FileWriteLog($caminhoprint & "log_de_erros.log", @ScriptName & $linha & $tela) Exit EndFunc ;==>validatelaerros Func rodou_sem_erros() Global $caminho = ("C:\Users\serverteste\Desktop\Rodou na automação\") _FileWriteLog($caminho & "\Rodou.log", @ScriptName & @CR & @HOUR & @MIN) Exit EndFunc ;==>rodou_sem_erros ImageSearchDLL.dll ImageSearch.au3
  2. Senhores, Pensei em varias formas de como colocar minha necessidade em texto, nenhuma delas conseguiu demonstrar o total de minha necessidade, não quero abusar da boa vontade de vcs mas já abusando, coloquei minha duvida em vídeo... Vídeo com duvida Segue os scripts apresentados no vídeo: #include <File.au3> MsgBox (64,"executavel1","executavel1",3) escreverqueexecutol() func escreverqueexecutol() FileWriteLine("C:\Users\Pc Gamer\Desktop\Scripts autoit\Log\criado.log", @ScriptName & " " & @hour & ":" & @min & ":" & @sec) EndFunc #include <File.au3> headpassou() rodartodos() finalpassou() Func headpassou() Global $sIniFile = FileOpen("C:\Users\Pc Gamer\Desktop\Scripts autoit\Log\criado.log", 2) ;=== some lines of text to test: For $i = 1 To 12 FileWriteLine($sIniFile, "") Next FileClose($sIniFile) ;---------------Head de relatorios que rodaram--------------------------- _FileWriteLog("C:\Users\Pc Gamer\Desktop\Scripts autoit\Log\criado.log", @ScriptName, 1) _FileWriteToLine("C:\Users\Pc Gamer\Desktop\Scripts autoit\Log\criado.log", 1, "-------------------------------------------------------------------------------------------|", True) _FileWriteToLine("C:\Users\Pc Gamer\Desktop\Scripts autoit\Log\criado.log", 2, "Relatorio de executaveis executados pela automação sem erros. |", True) _FileWriteToLine("C:\Users\Pc Gamer\Desktop\Scripts autoit\Log\criado.log", 3, "-------------------------------------------------------------------------------------------|", True) _FileWriteToLine("C:\Users\Pc Gamer\Desktop\Scripts autoit\Log\criado.log", 4, " |", True) _FileWriteToLine("C:\Users\Pc Gamer\Desktop\Scripts autoit\Log\criado.log", 5, "Inicio da execução: " & @HOUR & ":" & @MIN & ":" & @SEC & " |", True) _FileWriteToLine("C:\Users\Pc Gamer\Desktop\Scripts autoit\Log\criado.log", 6, "") EndFunc ;==>headpassou Func finalpassou() _FileWriteToLine("C:\Users\Pc Gamer\Desktop\Scripts autoit\Log\criado.log", 6, "Fim da execução: " & @HOUR & ":" & @MIN & ":" & @SEC & " |", True) $sFileOld = "C:\Users\Pc Gamer\Desktop\Scripts autoit\Log\criado.log" $sFileRenamed = "C:\Users\Pc Gamer\Desktop\Scripts autoit\Log\Rodaram em " & @HOUR & "hora" & @MIN & "min" & @SEC & "sec.log" FileMove($sFileOld, $sFileRenamed) EndFunc ;==>finalpassou func rodartodos() $rootFolder = "C:\Users\Pc Gamer\Desktop\Teste"; PAsta onde estão os executaveis que serão rodados um a uma $fileArray = _FileListToArray($rootFolder, "*.exe", 1) For $X = 1 To $fileArray[0] RunWait($rootFolder & "\" & $fileArray[$X]) Next EndFunc func escreverqueexecutol() FileWriteLine("C:\Users\Pc Gamer\Desktop\Scripts autoit\Log\criado.log", @ScriptName & " " & @hour & ":" & @min & ":" & @sec); pasta que sera criado o log EndFunc
  3. Senhores, Depois de estudar muito a resposta do Manimal (uma verdadeira aula), consegui uma forma que atende o que preciso. Provavelmente para vcs pode ser uma coisa simples mas demorei entender, por isso estou feliz com o que consegui. Consegui a melhor solução? Consegui a mais pratica? A correta? Não para todas as repostas... Maaaaaasssss e funcional hehehe Obrigado novamente Manimal. Abraços
  4. Caro Manimal, Com a licença do trocadilho vc e realmente "ANIMAL" no melhor sentido da palavra, cara vc e demais. Esse relatório esta perfeito para rodar os executáveis e aprendi bastante com as explicações, Muito obrigado. Porem, contudo, todavia... não e exatamente o que preciso... alias, e mais não e. Deixa eu explicar melhor ver se novamente você pode me ajudar. O que estou fazendo não e um sistema em si e sim a automação de testes de um sistema. Para automação dos testes gerei um executável para cada validação que seja preciso fazer, por exemplo, vamos pensar no login desse sistema com 3 usuários diferentes. A unica coisa que altera nesses 3 casos seriam os usuários e as senhas, para isso criei a função login como variável apenas o usuário e as senhas. Func LOGINSISTEMA($usuario, $senha) ; Sem validação Run("C:\Arquivos de programas\Sistema\sistema.exe") ; abre o sistema Opt("WinTitleMatchMode", 2) ;1=start, 2=subStr, 3=exact, 4=advanced, -1 to -4=Nocase $telalogin = ("Login - Sig") ; define a tela que sera aberta no login do sistema $telabemvindo = ("Bem vindo") ; define a tela que sera aberta após login WinWaitActive($telalogin, "", 15) Then ; espera a tela do login abrir por até 15 segundos, se ela abrir segue ControlClick($telalogin, "", "[CLASS:TcxComboBox; INSTANCE:1]") ; Clica no input de usuario Send($usuario) ; Envia o usuario para o campo ControlClick($telalogin, "", "[CLASS:TcxCustomInnerTextEdit; INSTANCE:1]") ; Clica no input de senha Send($senha) Send("{ENTER}") WinWaitActive($telabemvindo, "", 15) Then ; espera a tela do de bem vindo por 15 segundos ControlClick($telabemvindo, "", "[CLASS:TmodButton; INSTANCE:1]") ; Clica no botão OK ProcessClose ("sistema.exe");Fecha o sistema após o login EndFunc ;==>LOGINSISTEMA Com essa função, criei um executável para cada usuário e coloquei em uma pasta. Exemplo: login usuario1.exe login usuario2.exe login usuario3.exe Pronto, no melhor dos mundos, rodava o relatório que vc fez só alterando o caminho da pasta para onde estão os relatórios e pronto. Só que e uma automação dos testes, cade a validação ai? Ele só fez rodar o que pedi e não validou nada em si. Por isso criei as validações como funções, fiz uma para cada tipo de situação ou validação. A mesma coisa fiz para validar se executável rodou sem problemas ou não, no final de cada script de executável ele alimenta um log de execução correta (que esse seria o relatório de execução da duvida inicial) Vamos ver o exemplo do mesmo login, só que agora validando a tela e alimentando o log quando finaliza. Func LOGINSISTEMA($usuario, $senha) ; Com validação Run("C:\Arquivos de programas\Sistema\sistema.exe") ; abre o sistema Opt("WinTitleMatchMode", 2) ;1=start, 2=subStr, 3=exact, 4=advanced, -1 to -4=Nocase $telalogin = ("Login - Sig") ; define a tela que sera aberta no login do sistema $telabemvindo = ("Bem vindo") ; define a tela que sera aberta após login If WinWaitActive($telalogin, "", 15) Then ; espera a tela do login abrir por até 15 segundos, se ela abrir segue ControlClick($telalogin, "", "[CLASS:TcxComboBox; INSTANCE:1]") ; Clica no input de usuario Send($usuario) ; Envia o usuario para o campo ControlClick($telalogin, "", "[CLASS:TcxCustomInnerTextEdit; INSTANCE:1]") ; Clica no input de senha Send($senha) Send("{ENTER}") Else validatela() ; Fecha tudo, tira print e manda para o log de erros. EndIf If WinWaitActive($telabemvindo, "", 15) Then ; espera a tela do de bem vindo por 15 segundos ControlClick($telabemvindo, "", "[CLASS:TmodButton; INSTANCE:1]") ; Clica no botão OK ProcessClose("sistema.exe") ;Fecha o sistema após o login Else validatela() ; Fecha tudo, tira print e manda para o log de erros. EndIf logsemerros(); informa para o log que não houve problemas no executavel, se chegou ate aqui e porque passou nas validações acima, logo, esta tudo ok EndFunc ;==>LOGINSISTEMA Func validatela() Global $caminhoerros = ("C:\Users\Pc Gamer\Documents\Erros\") _ScreenCapture_Capture($caminhoerros & @ScriptName & ".jpg") ; tira print da tela que deu erro ProcessClose("sistema.exe") ; fecha sistema _FileWriteLog($caminhoerros & "\log_de_erros.log", @ScriptName) ; Escreve no log de erro o nome do scrpt que deu erro. Exit EndFunc ;==>validatela Func logsemerros() _FileWriteLog("C:\Users\Pc Gamer\Documents\Pssaram\executaveis que rodaram.log", @ScriptName) EndFunc ;==>logsemerros Percebeu a minha dificuldade ai? Só e para ser apresentado no relatório de execução os que chegarem ate o final de cada executável, caso ele não seja executado ate o final ele vai para o log de erros, que seria o relatório dos executáveis que apresentaram erros (esse e outra coisa que uma listagem ja me basta, já tenho pronto). No exemplo que coloquei no vídeo da duvida, eu criei um head por isso, o inicio não muda, porem, ele vai alimentando o arquivo criado para relatório de execução, de acordo com os executáveis que vão passando ou não (no caso os que apresentarem erros nem entram nesse relatório pois não chega na parte que ele escreve no arquivo) Head() ; Faz aquele cabeçario basico sem fazer calculo nenhum; so informando o horário de inicio rodartodos(); função apenas para rodar todos os executáveis que estão dentro da pasta finalpassou() ; função para renomear o arquivo de log do que passou e escrever o horário que terminou de rodar todos os executáveis de pasta Func headpassou() Global $sIniFile = FileOpen("C:\Users\Pc Gamer\Desktop\Scripts autoit\Log\criado.log", 2) ;=== some lines of text to test: For $i = 1 To 12 FileWriteLine($sIniFile, "") Next FileClose($sIniFile) ;---------------Head de relatorios que rodaram--------------------------- _FileWriteLog("C:\Users\Pc Gamer\Desktop\Scripts autoit\Log\criado.log", @ScriptName, 1) _FileWriteToLine("C:\Users\Pc Gamer\Desktop\Scripts autoit\Log\criado.log", 1, "-------------------------------------------------------------------------------------------|", True) _FileWriteToLine("C:\Users\Pc Gamer\Desktop\Scripts autoit\Log\criado.log", 2, "Relatorio de executaveis executados pela automação sem erros. |", True) _FileWriteToLine("C:\Users\Pc Gamer\Desktop\Scripts autoit\Log\criado.log", 3, "-------------------------------------------------------------------------------------------|", True) _FileWriteToLine("C:\Users\Pc Gamer\Desktop\Scripts autoit\Log\criado.log", 4, " |", True) _FileWriteToLine("C:\Users\Pc Gamer\Desktop\Scripts autoit\Log\criado.log", 5, "Inicio da execução: " & @HOUR & ":" & @MIN & ":" & @SEC & " |", True); horário que iniciou todas as execuções _FileWriteToLine("C:\Users\Pc Gamer\Desktop\Scripts autoit\Log\criado.log", 6, "") EndFunc ;==>headpassou func rodartodos() $rootFolder = "C:\Users\Pc Gamer\Desktop\Teste"; Psta onde estão os executaveis que serão rodados um a uma $fileArray = _FileListToArray($rootFolder, "*.exe", 1) For $X = 1 To $fileArray[0] RunWait($rootFolder & "\" & $fileArray[$X]) Next EndFunc Func finalpassou() _FileWriteToLine("C:\Users\Pc Gamer\Desktop\Scripts autoit\Log\criado.log", 6, "Fim da execução: " & @HOUR & ":" & @MIN & ":" & @SEC & " |", True) $sFileOld = "C:\Users\Pc Gamer\Desktop\Scripts autoit\Log\criado.log" $sFileRenamed = "C:\Users\Pc Gamer\Desktop\Scripts autoit\Log\Rodaram em " & @HOUR & "hora" & @MIN & "min" & @SEC & "sec.log" FileMove($sFileOld, $sFileRenamed) EndFunc ;==>finalpassou Por fim, o que preciso seria que. 1º O cabeçario do arquivo que vou usar de relatório fosse uma função separada, ele vai ser criado de todo jeito ja que leva o texto inicial, ele apenas seria o ponto de onde buscar o horário inicial da execução de todos os executáveis dentro da pasta. 2º Não e a função que roda todos da pasta que escreve no log. Cada executável dentro da pasta (que a função que roda todos usa), vai informar para o arquivo que foi criado no head seu tempo de inicio e seu tempo final de execução, porem, ele só vai escrever no arquivo no final do seu processo. Para esse caso teria que ser uma função de log no final de cada executável (se não chegar nela deu erro antes, logo nem vai para o relatório), essa função que teria que escrever no log de execução, por executável, a hora inicio, fim e total de cada um. 3º A função do final que também teria que ser separada que iria informar o tempo final de execução de todos os executáveis e o total da diferença do inicio da execução e do final. O total ai seria a difenreça do horário informado no head e o horário final que ela escreve. Com seu relatório e seus exemplos andei bastante mas não consigo fazer o bendito calculo de horário de inicio, fim e total ser por executável. Sem isso não tenho validação. Teria como fazer as funções da forma que explicitei acima? Novamente muito obrigado pela "aula" na resposta anterior. Abraços
  5. Senhores, Preciso de uma função que o gatilho e que se a pasta não estiver vazia seja ativada, se estiver vazia não faça nada. Tentei usar o FileFindFirstFile e o FileExists e ambos não me atenderam. Não sei onde estou errando mas ambos os resultados apresentam a mesma resposta, existindo ou não o arquivo na pasta. ; Tentei das duas formas Func Exemplo() If FileFindFirstFile("C:\Users\Pc\Desktop\Teste") Then MsgBox(64, "", "Existe " ) Else MsgBox(64, "", "Não existe " ) EndIf EndFunc ;==>Example ; existindo ou não apresenta a mesma mensagem Func Exemplo() If FileExists ("C:\Users\Pc\Desktop\Teste") Then MsgBox(64, "", "Existe " ) Else MsgBox(64, "", "Não existe " ) EndIf EndFunc ;==>Example Estou usando a função correta? Qual seria a função ideal para essa verificação? Alguém poderia me dar um exemplo de código simples nesse sentido de validação?
  6. Perfeito, exatamente o que eu precisava, não fui claro mas realmente eu precisava que ele valida-se os arquivos dentro da pasta. Obrigado pessoal.
  7. Pessoas, Fiz o código abaixo para rodar vários executáveis que estiverem dentro de uma pasta que sera selecionada. #include <file.au3> #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #Region ### START Koda GUI section ### $Form1_1 = GUICreate("Rodar executaveis", 551, 172, 316, 323) $Group1 = GUICtrlCreateGroup("Seleção", 16, 0, 513, 153) $Label1 = GUICtrlCreateLabel("Pasta", 40, 40, 31, 17) $Input1 = GUICtrlCreateInput("", 80, 40, 241, 21) $Button1 = GUICtrlCreateButton("Procurar", 328, 40, 99, 25) $Button3 = GUICtrlCreateButton("Rodar exes", 40, 96, 75, 25) GUICtrlCreateGroup("", -99, -99, 1, 1) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Button1 $Label1 = FileSelectFolder("Procurando pasta 1.", "") If FileExists($Label1) Then GUICtrlSetData($Input1, $Label1) ; mostrar a pasta selecionada Case $Button3 $fileArray = _FileListToArray($Label1, "*.exe", 1) For $x = 1 To $fileArray[0] ShellExecuteWait($Label1 & "\" & $fileArray[$x]) Next EndSwitch WEnd O FileSelectFolder seleciona a pasta, mas na seleção não mostra o conteúdo da pasta, eu precisaria que na seleção apresenta-se o conteúdo da pasta , assim, sabendo o conteúdo da pasta que eu iria selecionar somente a pasta e rodar todos os executáveis que estiverem dentro dela. Tem como fazer com FileSelectFolder isso ou teria que usar outra coisa?
  8. Valeu pessoal, mesmo com as alterações ainda não ficou exatamente como eu queria, porem, contudo, todavia... vai ficar assim mesmo. Obrigado.
  9. Senhores, acho que me expressei mal, fiz um curto vídeo para não ter duvidas de qual a minha necessidade. https://youtu.be/p0d4pbp78HU No vídeo coloquei a forma que estou buscando visualizar a seleção de pastas. Script que cito no vídeo para alteração caso alguém saiba como fazer da forma que preciso. #include <file.au3> #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #Region ### START Koda GUI section ### $Form1_1 = GUICreate("Rodar executaveis", 551, 172, 316, 323) $Group1 = GUICtrlCreateGroup("Seleção", 16, 0, 513, 153) $Label55 = GUICtrlCreateLabel("Pasta", 40, 40, 31, 17) $Input1 = GUICtrlCreateInput("C:\Users\Pc Gamer\Desktop\Teste", 80, 40, 241, 21) $Button1 = GUICtrlCreateButton("Procurar", 328, 40, 99, 25) $Button3 = GUICtrlCreateButton("Rodar exes", 40, 96, 75, 25) GUICtrlCreateGroup("", -99, -99, 1, 1) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Button1 $todos = FileSelectFolder("Procurando pasta 1.", "") If FileExists($todos) Then GUICtrlSetData($Input1, $todos) ; mostrar a pasta selecionada Case $Button3 $Input1 = $todos $rootFolder = $Input1 $fileArray = _FileListToArray($rootFolder, "*.exe", 1) For $X = 1 To $fileArray[0] RunWait($rootFolder & "\" & $fileArray[$X]) Next EndSwitch WEnd
  10. Senhores, tentei com a indicação do Manimal e não consegui. Na forma do post eu visualizei a outra tela, mas não apresenta todos os arquivos dentro da pasta. Algumas pastas coloquei na area de trabalho e essas nem consegui encontrar pelo script do post.
  11. Olá pessoal, Estou tentando utilizar o ImageSearch, porem, tudo que eu tento rodar apresenta o erro na função... Tentei rodar algo simples para verificar se iria funcionar, segue o que tentei. #include <ImageSearch.au3> global $y = 0, $x = 0 Local $search = _ImageSearch('achar.bmp', 0, $x, $y, 0); icone na area de trabalho If $search Then MsgBox (64,"Encontrou","Encontrou") Else MsgBox MsgBox (64,"Não Encontrou","Não Encontrou") EndIf Alguém pode me dizer o que fazer para funcionar? Segue também a Dll e o au3 que peguei da internet. ImageSearch 64 bit.rar Estou usando o Windows 10 Edit. CONSEGUI RESOLVER, NA PRIMEIRA LINHA DAS FUNÇÕES QUE APRESENTAM ERRO, REESCREVI INCLUINDO ESPAÇOS EM TODAS AS VARIÁVEIS. Edit. Consegui Resolver, reescrevi a função colocando espaço em todos os ligares da função.
  12. Antes tarde do que nunca. Desculpem a demora mas segue os arquivos que usei. OBS: Em windows 64 bits tem de colocar para rodar como 64x, não roda direto do scite. ImageSearch.rar
  13. Olá amigos, Venho pedir ajuda de vocês em algo diferente, espero que possa usar esse espaço para esse tipo de duvida (caso não so exclui o post ai admins e desculpa qualquer coisa). Sou bacharel em administração mas sempre trabalhei na área de sistemas, como tester, suporte, consultor de implantação e analista de testes. Gosto muito da área de testes, vejo um constante crescimento e valorização da área de testes automatizados e gostaria de me tornar um especialista na área. Não tenho muito conhecimento em programação nem qualificação acadêmica de sistemas. Mas separei um dinheiro que gostaria de investir em minha qualificação. Inicialmente pensei em cursar uma segunda graduação voltada para área de sistemas, porem, não sei se e o caminho correto visto que o que quero não e ser um programador, sei que e necessário programar, mas não sei se seria necessário uma nova graduação ao invés de apenas um curso especifico para aprender o que preciso programar na área de automação. Diante do exposto, venho pedir a ajuda de vocês. Qual o caminho trilhar para me tornar um profissional na área de testes automatizado? Quais cursos devo fazer? Quais ferramentas conhecer/dominar? Quais certificados buscar para ter um diferencial no mercado? Essa área esta realmente boa pra seguir? caso não, qual outra poderia seguir ? Espero pode contar com as dicas de vocês.
  14. Pessoal, estou engatinhando ainda na automação, fiz uma automação para testes de um sistema onde em certo ponto ele gera um arquivo txt em uma pasta, preciso de uma forma que ele valide se o arquivo criado na pasta A esta igual a um arquivo que tenho na pasta B (arquivo ja validado com os dados que a automação que gera o arquivo da pasta A deve gerar o txt). No caso seria comparar todos os dados de cada linha de arquivo txt em pasta A com o arquivo txt da pasta B. Caso não fossem iguais gerasse uma mensagem avisando que não estão iguais. Caso iguais gere finaliza o script. Alguém pode me ajudar em como fazer esse script?
  15. Pessoas vcs demais, Manimal obrigado pela "Aula", pq isso não foi resposta, foi uma aula mesmo. Muito obrigado mesmo. Abraços
  16. Olá pessoal, antes de qualquer coisa... Obrigado pela força. Vou tentar ser mais claro agora da minha necessidade. Fiz a automação de um sistema que gera um arquivo TXT (EFD contribuições). Ate a geração do arquivo consegui automatizar com o autoit, preciso de um script que compare um arquivo que sei que esta perfeito com o arquivo gerado pela minha automação. Os arquivos sendo iguais me indicaria que esta tudo bem com a nova versão do sistema (visto que o arquivo que ele compara esta com o resultado esperado ao que deve ser gerado). Preciso que seja verificado o conteúdo do arquivo. EX de diferença: Linha 1 arquivo "correto": [000]teste de validação Linha 1 arquivo "gerado": [000]teste de validaçao "Arquivos não são iguais" Não preciso que me mostre onde esta a diferença (isso trato manualmente), mas tem de identificar qualquer diferença e apresentar mensagem indicando a diferença, no caso acima a diferença foi o ~ Os códigos enviados pelo Orver e pelo Luigi mostram resultados iguais para arquivos com dados diferentes, ou me mostram que arquivos são iguais, mesmo com conteúdos diferentes ou que são diferentes mesmo com conteúdos iguais. Não sei se e possível um validador assim como preciso ... respondendo o Manimal @@Manimal, "Pelo que entendi, sua necessidade é apenas verificar se os arquivos são iguais ou não, independente de verificação do conteúdo interno, isso?" O que preciso validar e justamente o conteúdo interno do arquivo. Os arquivos vão sempre estar no mesmo formato, se validar somente o formato ele sempre vai dizer que esta igual. Obrigado pela força pessoal
  17. Mais ou menos, não precisa de um erro de comparação especificando onde esta errado, basta apresentar uma mensagem informado que tem algo errado, dai trato de outra forma. Como disse antes, tô começando na programação agora... como seria esse script conferindo linha a linha e apresentando a mensagem quando encontrar alguma linha diferente?
  18. Não sei se fui claro na pergunta, preciso que seja validado os dados dentro do arquivo verificando todas as linhas, indo linha a linha (não pode ter uma virgula diferente) Então... esse código que passou, usando os dois arquivos, apresenta a mensagem de erro como se os arquivos estivessem diferentes (copiei e colei para serem iguais), porem, quando vou verificar no winmerge os arquivos estão idênticos....
  19. Olá pessoas, Sou da área de testes/implantação/suporte/treinamento, em testes fiz no máximo testes funcionais, ficava mais na área de projetos elaborando as regras do que deveria ser testado no sistema (sou bacharel em Adm)... no máximo fazia uns selects no banco (sql). Atualmente estou trabalhando como suporte em uma empresa com um sistema relativamente simples feito em Delphi. Estou como suporte e tester ao mesmo tempo, o que acontece e que muitas vezes a versão sai em cima da hora e com tantos atendimentos de suporte, não da tempo pra testar nem o básico. Diante disso decidi estudar para tentar de alguma forma automatizar esses teste. A uma semana comecei a estudar logica de programação e a estudar o autoit. Estou me esforçando, porem, contudo, todavia... gostaria de pedir uma ajuda de vocês. Comecei a fazer a automação dos testes de forma sequencial, sem validar nada, era praticamente so rodar o que o record pegava dos testes que eu fazia e gravava (com alguns poucos ajustes), porem, agora comecei a fazer o sistema validar as telas que estão ativas e apresentar mensagens caso não seja a esperada, diante disso estou com outro problema... meus códigos estão ficando muito grandes e repetitivos. Gostaria de algumas dicas para melhorar a forma que escrevo. Sou novo por aqui... não sei se serei respondido colocando dessa forma, mas vou colocar algumas de minhas duvidas em "pseudocodigo" descrevendo minha necessidade e algumas da forma que estou fazendo mesmo. Vamos lá.... 1º) Tenho muito essa parte repetida em meus códigos, alterando somente o titulo da tela e os comandos (caso tela esteja ativa) WinWaitActive ("Titulo da tela no meu sistema","",1) if WinActivate ("Titulo da tela no meu sistema") then ;aqui coloco os comandos que quero automatizar... Send(etc), Sleep(etc)... Else MsgBox ("64","ERRO","A tela não e a esperada, a tela correta seria 'Titulo da tela no meu sistema' ") ; Mensagem que apresenta caso não seja a tela para informar os dados para automatizar a tarefa endif Perguntas: 1 - Estou indo no caminho certo usando como parâmetro o titulo da tela para validar o andamento da automação? 2 - Qual seria a melhorar forma de identificar sem ser o titulo da tela? 3 - Teria como essa validação que faço ser uma função? como ela seria? 2º) Como seria uma função para tirar um print da tela, salvar com nomenclatura especifica, em local especifico, fechar um programa especifico, encerrar o script/executavel do autoit e abrir proximo script/executavel do autoit? EX: WinWaitActive ("Titulo da tela no meu sistema","",1) if WinActivate ("Titulo da tela no meu sistema") then ;aqui coloco os comandos que quero automatizar... Send(etc), Sleep(etc)... Else MsgBox ("64","ERRO","A tela não e a esperada, a tela correta seria 'Titulo da tela no meu sistema' ",5) ; Mensagem que apresenta caso não seja a tela para informar os dados para automatizar a tarefa <<<<<Aqui seria a função que iria TirarPrint e salvar em algum lugar com o nome sendo o titulo da tela, data e hora que aconteceu o erro>>>>> <<<<<Aqui seria a função para Fechar o executável que estou validando e para fechar o script/executavel do autoit>>>> endif Por enquanto e isso pessoal... Desculpe qualquer coisa e espero que alguém possa me ajudar.
  20. Podem me ajudar com essa duvida? http://forum.autoitbrasil.com/index.php?/topic/1915-erro-na-funcao-do-imagesearch-como-corrigir/ Edit. Consegui Resolver, reescrevi a função colocando espaço em todos os ligares da função.
  21. Validador de execução

    Olá pessoal, Tenho uma lista de executaveis.au3 em uma pasta, no final de cada script estou informando para abrir o próximo, so que estou informando manualmente. Pensei em fazer uma forma onde o seria aberto o próximo executável mesmo sem eu informar qual seria, contanto que ele ja não tenha sido executado. Para a condição de saber se ele rodou ou não pensei em usar _FileWriteLog para escrever o nome do executável cada vez que ele finalizar ou der erro ele escreve o nome do executável em um log. Minha duvida e como faria o script ler o nome dos executáveis na pasta onde estão todos os meus executáveis, ler o nome do primeiro que ele encontrar e verificar no log se esse nome existe, caso exista ele pular para o próximo e fazer a mesma validação ate achar um que não esteja com o nome no log e executar esse, aguardar ate que ele seja finalizado e voltar para a verificação inicial para rodar o próximo que não esteja no log e assim por diante... Como faria essa validação?
  22. Obrigado a todos pela força, vamos lá. Consegui fazer algumas validações em meus testes, como e um teste sequencial com base na interface apresentada, no fim vai ficar grande mesmo o script. Montei como estou validando usando o notepad como exemplo, porem não consigo fazer tudo que preciso. Tenho algumas duvidas EX #include <ScreenCapture.au3> global $caminho = ("C:\Bots\"); caminho onde saldo os prints dos erros Local $tela1 = ("Sem título - Bloco de notas111") Run ("notepad.exe") WinWaitActive ($tela1,"",1) If WinActive ($tela1) then Sleep (500) Send ("tela esta correta") Else MsgBox (64,@ScriptName & " Erro na linha " & @ScriptLineNumber , "Tela correta seria" & @CRLF & $tela1) _ScreenCapture_Capture ($caminho & @ScriptName & "erro.jpg" ) EndIf ;DUVIDAS 1ª Depois do print (so tira print se a tela não for a esperada,dai ja sei que deu algum erro) preciso que o script encerre o programa que ele esta validando a tela, como eu faria para ele fechar o programa que esta executando (nesse caso o notepad)? 2º Depois de fechar o programa que estava validando a interface, preciso que ele inicie outro script/exe.au3, no caso ele chamaria outro executável au3 (assim não pararia a automação por apresentar um erro e continuaria para próximo passo). 3º Apos chamar o outro executável o script se encerraria devido a ter apresentado erro
×