Salvar Currículos do HeadHunter#

Vamos considerar um exemplo de robô que salva currículos do site hh.ru.

O projeto do robô consiste em um diagrama.

O diagrama do projeto é assim (para conveniência, os blocos do diagrama estão numerados):

  1. Bloco “Início” (a partir deste bloco começa qualquer diagrama).
  2. Bloco “Janela de Entrada de Texto” permite mostrar uma janela de diálogo modal, destinada a obter informações do usuário. Para este bloco, as seguintes propriedades são especificadas:
  • Título (texto que será exibido no cabeçalho da janela de diálogo. Neste caso: “Sherpa RPA”);
  • Mensagem (texto que será exibido dentro da janela de diálogo. Neste caso: “Digite a consulta de pesquisa:”)
  1. Bloco “Codificar String de URL” permite codificar uma string para transmissão em uma URL. Para este bloco, a string de entrada é “Texto”, e a string resultante na saída é “Resultado”.
  1. Bloco “Atribuir Valor à Variável” define novos valores para uma ou mais variáveis. Neste caso, nas propriedades, são especificados dois valores que devem ser atribuídos a duas variáveis, respectivamente.
  1. Bloco “Iniciar Chrome” permite iniciar o navegador Google Chrome. Para este bloco, as seguintes propriedades são especificadas:
  • URL (endereço da página a ser aberta na inicialização, especificado por meio de uma variável);
  • Aba Atual (com a flag ativada, a página será aberta na aba atualmente selecionada do navegador);
  • Tempo de Espera (tempo de espera para iniciar o aplicativo e carregar a aba em segundos).
  1. Bloco “Contar Elementos” permite obter a quantidade de elementos do mesmo tipo em uma página da web de acordo com um seletor especificado. Para este bloco, as seguintes propriedades são especificadas:
  • Seletor (identificador da janela do navegador e do elemento da página da web, comum a todos os elementos do mesmo tipo procurados);
  • ID do Processo (variável que armazena o identificador do processo e da aba do navegador utilizados por este bloco);
  • Timeout (tempo limite para contar os elementos em segundos).
  1. Bloco “Laço” permite repetir uma sequência de ações (blocos) várias vezes e, ao mesmo tempo, contar o número de iterações do laço, registrando a quantidade atual em uma variável especial (especificada na propriedade “Laço”), que pode ser utilizada em outros blocos. Na primeira entrada no bloco, o valor da variável da propriedade “Laço” é igualado ao “Valor Inicial” (neste caso, é igual a 0), e então a execução do cenário continua em direção à saída “Laço” deste bloco (no chamado “corpo do laço”). Assim que a execução do cenário chegar novamente a este bloco, o valor da variável “Laço” será incrementado pelo valor do “Passo” (neste caso, é igual a 1), e novamente ocorrerá a transição em direção à saída “Laço”. Assim que o valor da variável “Laço” se tornar maior ou igual ao “Valor Final” (neste caso, é definido pela variável $Count), a execução do cenário continuará em direção à saída inferior do bloco. Não se esqueça de conectar a saída do último bloco no corpo do laço à entrada deste bloco ou de algum dos blocos anteriores.
  1. Bloco “Log” permite registrar mensagens e/ou valores de variáveis no log durante a execução do cenário do robô. Para este bloco, a propriedade “Valor” é especificada. Entre aspas, é indicada uma constante de texto, e o nome da variável começa com o símbolo $. Ou seja, este bloco registra no log do robô o índice da página processada.
  1. Bloco “Atribuir Valor à Variável” define novos valores para uma ou mais variáveis. Neste caso, nas propriedades, é especificado um valor que deve ser atribuído a uma variável, respectivamente.
  1. Bloco “Condição” verifica a condição especificada para ver se é verdadeira, após o que a execução do cenário continua em direção à saída “Sim” (se a condição for atendida) ou em direção à saída “Não” (se a condição não for atendida).

A condição é escrita no formato: “variável” é igual (==)/ maior (>)/ menor (<) “valor”.

Por exemplo: $a == “Olá”, ou seja, se o valor da variável $a for igual a “Olá”, então a saída é “Sim”, caso contrário – a saída é “Não”.

$Result > 5, ou seja, se o valor da variável $Result for menor que 5, então a saída é “Sim”, caso contrário – a saída é “Não”.

Neste caso, a condição estabelecida é: $countpage==0. Ou seja, a variável que indica o número da página é igual a zero.

  1. Bloco “Atribuir Valor à Variável” define novos valores para uma ou mais variáveis. Neste caso, nas propriedades, são especificados dois valores que devem ser atribuídos a duas variáveis, respectivamente.
--- title: "Blocos de Ação" description: "Descrição dos blocos de ação no Sherpa RPA." ---

Blocos 12. - 18. parcialmente gravados com a ferramenta “Gravação”. Esses blocos contêm uma série de emulações de cliques e pressionamentos de teclas, cujo resultado será a salvaguarda de todo o resumo em um arquivo no formato html.

19. Bloco “Condição” verifica a veracidade da condição especificada, após o que a execução do script continua na direção da saída “Sim” (se a condição for atendida) ou na direção da saída “Não” (se a condição não for atendida).

A condição é escrita no formato: “variável” igual a (==)/ maior que (>)/ menor que (<) “valor”.

Por exemplo: $a == “Olá”, ou seja, se o valor da variável $a for igual a “Olá”, a saída é “Sim”, caso contrário – a saída é “Não”.

$Result > 5, ou seja, se o valor da variável $Result for menor que 5, a saída é “Sim”, caso contrário – a saída é “Não”.

Neste caso, a condição estabelecida é: $origfilename != "". Ou seja, a variável não está vazia.

20. Bloco “Atribuir valor à variável” estabelece novos valores para uma ou mais variáveis. Neste caso, nas propriedades, é especificado um valor que deve ser atribuído a uma variável, respectivamente.

21. Bloco “Número aleatório” gera um número aleatório com parâmetros especificados. Para este bloco, as seguintes propriedades são indicadas:

  • Valor mínimo (o número aleatório não será menor que este valor);
  • Valor máximo (o número aleatório não será maior que este valor);
  • Passo (passo do número aleatório).

22. Bloco “Renomear arquivo/pasta” permite atribuir um novo nome ao arquivo ou pasta especificados. Neste caso, ao arquivo. Para este bloco, as seguintes propriedades são indicadas:

  • Caminho (caminho para o arquivo cujo nome deve ser alterado);
  • Sufixo (sufixo que será adicionado ao nome do arquivo);
  • Temporário (com a flag ativada, a renomeação do arquivo será realizada apenas durante a execução do programa, sem alterações no sistema de arquivos).

23. Bloco “Atribuir valor à variável” estabelece novos valores para uma ou mais variáveis. Neste caso, nas propriedades, é especificado um valor que deve ser atribuído a uma variável, respectivamente.

Os blocos 24. – 25. contêm uma série de emulações de pressionamentos de teclas, cujo resultado será a entrada do nome do arquivo na janela de salvamento do Google Chrome.

26. Bloco “Clique do mouse” foi gravado com a ferramenta “Gravação”. Este bloco emula um clique do mouse, cujo resultado será a transição para a próxima página.

27. Bloco “Limpar cache de seletores” permite limpar o cache interno de seletores. Ao usar seletores para acelerar a busca de elementos na página, um cache interno é utilizado. Informações sobre o elemento são armazenadas no cache após sua identificação bem-sucedida, e posteriormente, ao buscar o elemento, o cache é verificado primeiro. Se houver informações sobre este seletor no cache, elas são extraídas dele, o que acelera significativamente o trabalho do robô. No entanto, em alguns casos, esse cache pode impactar negativamente a execução do script. Isso é frequentemente observado ao processar ciclicamente elementos semelhantes em uma única página, como resultados de busca. Nesses casos, recomendamos limpar o cache ao iniciar cada iteração de varredura de elementos semelhantes na página.

28. Bloco “Fechar aba do navegador” permite fechar a aba especificada do navegador indicado. Para este bloco, é indicado o ID do processo (variável que armazena o identificador do processo e da aba do navegador utilizados por este bloco).

29. Bloco “Pausa” suspende a execução do script por um tempo determinado. Para este bloco, as seguintes propriedades são indicadas:

  • Unidade de medida (unidade de medida na qual a duração da pausa é especificada);
  • Duração (valor do intervalo de tempo nas unidades de medida especificadas);
  • Iniciar imediatamente (a flag ativada aplica a pausa imediatamente na primeira passagem deste bloco desde o início do script do robô).

30. Bloco “Fim” (este bloco encerra a execução do script ou retorna o diagrama do subprocesso ao processo principal).