Ir para o conteúdo

Lab 2.7: Reportando erro ao Orquestrador

A gestão de erros é parte essencial do desenvolvimento de qualquer aplicativo, e com automações isso não é diferente.

Através do código do robô podemos tratar e registrar os erros/exceções que acontecem durante a execução de nosso processo.

error-view

Reportando erros ao Orquestrador BotCity Maestro

Vamos alterar nosso código para tratar qualquer erro durante o processo e enviar as informações ao Orquestrador BotCity Maestro.

Para isso, vamos alterar o código adicionando o bloco try/except/finally da seguinte forma:

...
def main():
    try:
        maestro = BotMaestroSDK.from_sys_args()
        execution = maestro.get_execution()

        bot = WebBot()

        # Configurando para rodar em modo headless
        bot.headless = False

        # Setando Firefox
        bot.browser = Browser.FIREFOX

        # Setando caminho do WebDriver
        bot.driver_path = r"resources\geckodriver.exe"

        maestro.alert(
            task_id=execution.task_id,
            title="BotCotação - Inicio",
            message="Estamos iniciando o processo",
            alert_type=AlertType.INFO
        )

        # Recuperando o parametro "moeda" e assumindo valor padrão como
        # Cotação Dólar
        moeda = execution.parameters.get("moeda", "Cotação Dólar")

        # Abre a página inicial do Google
        bot.browse("https://www.google.com")

        # Forcando uma exception para registrarmos um erro
        x = 0/0

        if not bot.find( "lupa", matching=0.97, waiting_time=10000):
            not_found("lupa")
        bot.click()
        bot.paste(moeda)
        bot.enter()

        valor_cotacao = bot.find_element(".SwHCTb", By.CSS_SELECTOR)
        print(f"Dólar => R$ {valor_cotacao.text}")

        status = AutomationTaskFinishStatus.SUCCESS
        message = "Tarefa BotCotação finalizada com sucesso"

    except Exception as ex:
        # Salvando captura de tela do erro
        bot.save_screenshot("erro.png")

        # Dicionario de tags adicionais
        tags = {"moeda": moeda}

        # Registrando o erro
        maestro.error(
            task_id=execution.task_id,
            exception=ex,
            screenshot="erro.png",
            tags=tags
        )

        status = AutomationTaskFinishStatus.FAILED
        message = "Tarefa BotCotação finalizada com falha"

    finally:
        bot.wait(2000)
        bot.stop_browser()

        # Finalizando a tarefa
        maestro.finish_task(
            task_id=execution.task_id,
            status=status,
            message=message
        )
...

No bloco de erros, podemos customizar as informações que serão enviadas, como captura de tela, anexos e tags. Saiba mais clicando aqui.

Testando o envio de erros

Para testarmos o envio de erros para o Orquestrador BotCity Maestro siga as instruções abaixo:

  • Crie uma tarefa no Orquestrador BotCity Maestro.
  • Aguarde até o final do processo onde está sendo forçada uma divisão por 0.

Isso fará com que uma exceção seja lançada, gerando um erro similar a este:

erro erro erro