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):
- Bloco “Início” (a partir deste bloco começa qualquer diagrama).
- 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:”)
- 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”.
- 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.
- 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).
- 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).
- 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.
- 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.
- 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.
- 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.
- 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.
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).