Season Tutoriais - Ep. 06: Como fazer loops


Olááááá Robotizadores … tudo bem? Eu sou a Paola Machado e vou ajudar a May Fernandes a produzir mais conteúdos aqui no blog para vocês. Nesse post-tutorial vamos falar sobre os loops e as diferentes formas de trabalhar com ele no Robot. As keywords do loop não estão em nenhuma library então, se tu ainda não é parceiro(a) do UserGuide. pode ser que seja um pouco difícil de achar. Então bora começar... 



1 - Instalação da library

Não é necessário instalar nenhuma library para utilizar as keywords de loop, pois esses recursos são da biblioteca padrão do RobotFramework, a BuiltIn.

2 - Loops com FOR

A sintaxe começa com :FOR e os dois pontos são necessários para separar a sintaxe das keywords normais, a próxima informação é a variável de "incremento" do loop, e a próxima informação deve ser a palavra IN (para listas) ou IN RANGE (para intervalo numérico), por fim são passados os números de início e fim que deseja iterar ou a lista que será percorrida.

2.1 - Loop em uma lista de elementos:



Nesse exemplo tenho uma lista de frutas (@{FRUTAS}) e para cada item dessa lista uma interação é executada, o FOR acaba quando todos os itens (${ITEM}) da lista tiverem sido percorridos.

2.2 - Loop em um intervalo de números:



Nesse exemplo tenho um intervalo de 1 a 6, ou seja, o contador (${COUNT}) irá ser incrementado a cada execução até que as 5 interações acabem. No robot o último número não é contabilizado como uma interação, ou seja, a interação nº 6 não irá ocorrer.


3 - Repetindo uma única keyword várias vezes

O último loop é um pouco diferente, todas as ações são colocadas em uma keyword e nós repetimos essa keyword em um determinado nº de vezes. Obs.: Não é possível interromper o loop antes que todas as iterações tenham sido concluídas.   

#DICA: Essa keyword está descrita na library BuiltIn.


Nesse exemplo a keyword que eu quero que se repita 4 vezes é a "Log     Vamos logar essa frase 4 vezes!!!"


4 - Keywords complementares

Temos mais 2 keywords para auxiliar na implementação com os loops:

Exit For Loop e Exit For Loop If

Elas fazem com que a execução do loop seja interrompido se a condição for verdadeira.

#DICA: Essas keywords também estão descritas na library BuiltIn.



Veja o código completo dos exemplos acima:



Em caso de dúvidas é possível encontrar a documentação detalhada no UserGuide do Robot!!!!
Até mais robotizadores!!!!

Comentários

  1. Gostaria de uma ajuda, estou começando com o robot, e preciso clicar no botão de "mais" e rolar o mouse, se tiver mais itens, clicar novamente. Como eu poderia fazer este caso?

    Comecei com a seguinte expressão

    "${mais}= Run Keyword And Return Status Element Should Not Be Visible id='mais'
    Run Keyword If '${mais}'=='True' Click Button id=mais


    No caso eu poderia utilizar "Continue For Loop If" , como eu faria? Por gentileza, poderiam me ajudar. Desde já agradeço.

    ResponderExcluir
    Respostas
    1. Olá!!!
      Tente verificar a keyword Scroll Element Into View da library SeleniumLibrary... http://robotframework.org/SeleniumLibrary/SeleniumLibrary.html#Scroll%20Element%20Into%20View
      Para mais duvidas, entre no nosso grupo de WhatsApp https://chat.whatsapp.com/GpbMka6NxEeLvk479JKXoJ, lá tem muitos usuários que podem ter passado por esse problema também!!!

      Abraço

      Excluir
    2. Boa tarde, gostaria de avisar que deu certo! Obrigado

      Excluir
  2. Sou um iniciante no RobotFramework. Tem como fazer um Loop Infinito? De imediato, podem pensar porque fazer um loop infinito? Tenho uma processo que precisa ficar esperando o retorno do Banco de Dados, então essa parte eu superei utilizando um Row Count, porém não consigo deixa esse processo em espera , pois quando chega no fim do 999999 cai fora. Alguém tem alguma sugestão?

    *** Test Cases ***
    Test Connetion
    [Tags] DBConnect
    Connect To DB ${DB_CONNECT_STRING}

    FOR ${i} IN RANGE 9999999
    ${Empresaresults[0][0]} Row Count ${EMPRESA}
    Run Keyword If ${Empresaresults[0][0]} == 1 Validacao Empresa
    Sleep 10 second
    END

    ResponderExcluir
    Respostas
    1. Você pode utilizar a keyword da BuiltIn chamada "Wait Until Keywords Succeeds" (http://robotframework.org/robotframework/latest/libraries/BuiltIn.html#Wait%20Until%20Keyword%20Succeeds), porém mesmo assim é preciso passar um número de tentativas ou tempo limite que ficará tentando.

      Excluir
  3. Bom dia, estou precisando passar uma função por parametro no robot pois sem isso vou ter que repetir essa mesma função 3 vezes apenas para mudar o nome de outra função dentro dela, segue exemplo:

    Envia requisicao
    [Arguments] ${nome do metodo} ${json} ${card} ${valor}
    ${account_holder} ${display_card} ${brand} ${expiry_month} ${expiry_year}
    ${json_file}= ${nome do metodo} ${json} ${card} ${valor}

    ${payload}= Evaluate json.loads($json_file) json
    ${payload2}= Evaluate json.dumps(${json_file}) json
    ${resp}= Post PS ${payload2}

    [return] ${resp}

    Em outras palavras, apenas tenho que mandar o nome da função que esta dentro da função "Envia requisicao". Apenas o nome

    ResponderExcluir

Postar um comentário

Postagens mais visitadas deste blog

[ATUALIZADO] Season Libraries - Ep. 01: Library Faker para informações aleatórias e fakes

Novo Curso: Robot Framework com Playwright e GitHub Actions

Season WEB Testing - Ep. 03: Open Browser - Chrome Options