Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

[Bug] Erro com a Keywords e a biblioteca FakeLibrary

Li os comentários e até segui algumas sugestões já mencionados por aqui, pra vê se resolvia o problema e nada resolveu. Se puderem ajudar, agradeço.

*** Settings ***
Library          SeleniumLibrary
Library          FakerLibrary         locale=pt_BR
Resource         setup_teardown.robot
Test Setup       Dado que eu acesse o Organo
Test Teardown    Fechar o navegador

*** Variables ***
${CAMPO_NOME}      id:form-nome
${CAMPO_CARGO}     id:form-cargo
${CAMPO_IMAGEM}    id:form-imagem
${CAMPO_TIME}      class:lista-suspensa
${CAMPO_CARD}      id:form-botao 
${PROGRAMACAO}     //option[contains(.,'Programação')]
${FRONT-END}       //option[contains(.,'Front-End')]
${DADOS}           //option[contains(.,'Data Science')]
${DEVOPS}          //option[contains(.,'Devops')]
${UX}              //option[contains(.,'UX e Design')]
${MOBILE}          //option[contains(.,'Mobile')]
${INOVACAO}        //option[contains(.,'Inovação')]

*** Test Cases ***
Verificar se ao preencher corretamente o formulário os dados são inseridos corretamente na lista e se um novo card é criado no time esperado
     Dado que eu preencha os campos do formulário
     E clique no botão criar card
     Então identificar o card no time esperado


Verificar se é possível criar mais de um card se preenchermos os campos corretamente
     Dado que eu preencha os campos do formulário
     E clique no botão Criar Card
     Então identificar 3 cards no time esperado

*** Keywords ***
Dado que eu preencha os campos do formulário
  Dado que eu preencha os campos do formulário
    ${Nome}             FakerLibrary.First Name
    Input Text          ${CAMPO_NOME}         ${Nome}
    ${Cargo}            FakerLibrary.Job
    Input Text          ${CAMPO_CARGO}        ${Cargo}
    ${Imagem}           FakerLibrary.Image Url
    Input Text          ${CAMPO_IMAGEM}       ${Imagem}
    Click Element       ${CAMPO_TIME}
    Click Element       ${PROGRAMACAO}
    
E clique no botão criar card    
    Click Element    ${CAMPO_CARD}

Então identificar o card no time esperado
    Element Should Be Visible    class:colaborador

Então identificar 3 cards no time esperado
    FOR    ${i}    IN RANGE    1        3
         Dado que eu preencha os campos do formulário
         E clique no botão Criar Card
    END

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

4 respostas

Olá Barbara! Tudo bem?

Esse erro geralmente ocorre quando há um loop ou recursão que excede o limite padrão do Robot Framework.

Mas no seu caso pode está acontecendo por outros motivos, por isso peço que compartilhe todo o seu projeto, usando o GitHub ou Drive do Google. Assim, poderei fazer testes para identificar o que está causando essa situação.

Fico no aguardo e à disposição

Olá, Armano Tudo bem e você? Tentei usar essa linha código, mas o robot não reconheceu.

Github: https://github.com/dandarabah/Robot-curso

import sys

# Get current limit
sys.getrecursionlimit()  # Outputs 1000 (default)

# Set new limit
sys.setrecursionlimit(2000)

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

solução!

Oi, Barbara! Peço desculpa pela demora.

O Robot Framework utiliza uma sintaxe própria, que não é Python diretamente, embora permita a integração com bibliotecas Python. Se você estiver escrevendo código Python diretamente em um arquivo .robot, o VSCode (ou o próprio Robot Framework) não reconhecerá corretamente o código.

Para usar código Python dentro de um arquivo .robot, você precisa utilizar bibliotecas customizadas ou chamar scripts Python como funções de biblioteca. Aqui estão duas maneiras de integrar o Python corretamente no Robot Framework:

Usar uma biblioteca customizada em Python

Você pode criar um arquivo Python separado com as funções que deseja utilizar e depois importá-lo no arquivo .robot.

  1. Crie um arquivo Python separado. Por exemplo, recursion_lib.py:

    import sys
    
    def set_recursion_limit(limit):
        sys.setrecursionlimit(limit)
        return sys.getrecursionlimit()
    
  2. No seu arquivo .robot, importe essa biblioteca e use a função criada:

    *** Settings ***
    Library    recursion_lib.py
    
    *** Test Cases ***
    Set Recursion Limit
        ${limit}=    Set Recursion Limit    2000
        Log    New recursion limit is ${limit}
    

2. Usar o Evaluate para executar código Python diretamente

Se você quiser apenas executar pequenos trechos de código Python no seu arquivo .robot, pode usar a palavra-chave Evaluate do Robot Framework, que permite executar expressões Python diretamente.

Exemplo:

*** Test Cases ***
Set Recursion Limit
    ${old_limit}=    Evaluate    sys.getrecursionlimit()    modules=sys
    Log    Old recursion limit is ${old_limit}
    
    Evaluate    sys.setrecursionlimit(2000)    modules=sys
    
    ${new_limit}=    Evaluate    sys.getrecursionlimit()    modules=sys
    Log    New recursion limit is ${new_limit}

Aqui, você está utilizando o Evaluate para executar diretamente a função sys.getrecursionlimit() e sys.setrecursionlimit().

Você não pode misturar diretamente código Python em um arquivo .robot. Para contornar isso, você pode ou criar uma biblioteca Python separada e importá-la, ou utilizar a palavra-chave Evaluate para executar código Python dentro do próprio Robot Framework.

Se você seguir essas abordagens, o VSCode e o Robot Framework vão reconhecer e executar o código corretamente.

Espero que isso resolva a sua situação!

OIi, Armano Magina.. Muiiito obrigada pela ajuda e atenção. Escolhi a primeira opção e deu super bom ^^ .