Salvar Vagas do SuperJob#

Vamos considerar um exemplo de robô que salva automaticamente as respostas para uma vaga criada no site SuperJob. Para o funcionamento correto, é necessário entrar na conta pessoal no site através do navegador “Google Chrome”.

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 “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 ao iniciar, especificado por meio de uma variável);
  • Tempo de espera (tempo de espera para iniciar o aplicativo e carregar a aba em segundos).
  1. Bloco “Obter texto” permite obter o texto ou o valor do atributo de um elemento da página da web (título, link, campo de edição, bloco de texto, etc.). Este bloco é gravado usando a ferramenta “Gravação”. Para ele, as seguintes propriedades são especificadas:
  • Seletor (identificador da janela do navegador e do elemento da página da web);
  • Tipo de valor (seleção do tipo de valor a ser extraído);
  • Rolagem automática (com a flag ativada, será realizada a rolagem automática até o elemento);
  • ID do processo (variável que armazena o identificador do processo e da aba do navegador utilizados por este bloco. Se a propriedade for deixada em branco, ou se a variável "ID do processo" não foi atribuída anteriormente no momento da abertura do navegador, o aplicativo e a aba do navegador serão determinados a partir do conteúdo da linha correspondente do seletor.);
  • Atraso antes (atraso em segundos antes da execução do bloco);
  • Atraso após (atraso em segundos após a execução do bloco);
  • Tempo de espera (tempo máximo de espera para o elemento especificado em segundos).
  1. Bloco “Condição” verifica a condição especificada para ver se é verdadeira, após o que a execução do script continua na saída “Sim” (se a condição for atendida) ou na 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 é: $Result != "Entrada". Ou seja, a variável não é igual a “Entrada”.

  1. Bloco “Log” permite registrar mensagens arbitrárias e/ou valores de variáveis durante a execução do script 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ô a mensagem “Clicando nas respostas” e a exibe no status.
  1. e 7. Blocos “Clique com o mouse” realizam um clique no elemento especificado do aplicativo.

  2. Bloco “Contar elementos” permite obter a quantidade de elementos do mesmo tipo na página da web de acordo com o seletor especificado. Este bloco é gravado usando a ferramenta “Gravação”. Para ele, 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 máximo 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 o número 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 script continua na saída “Laço” deste bloco (no chamado “corpo do laço”). Assim que a execução do script chegar novamente a este bloco, o valor da variável “Laço” aumentará em “Passo” (neste caso, é igual a 1), e novamente ocorrerá a transição para a 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 $CountItem), a execução do script continuará na 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.

Os blocos 10. - 13. são gravados usando a ferramenta “Gravação”.

  1. O bloco “Fechar aba do navegador” permite fechar a aba especificada do navegador indicado. Para este bloco, o ID do processo é especificado (variável que armazena o identificador do processo e da aba do navegador utilizados por este bloco).
  1. Bloco “Log” permite registrar mensagens arbitrárias e/ou valores de variáveis durante a execução do script 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 a mensagem “Erro de autenticação”.
```markdown 16\. **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 nas buscas subsequentes, o cache é verificado primeiro. Se houver informações sobre esse seletor no cache, elas são extraídas, o que acelera significativamente o trabalho do robô. No entanto, em alguns casos, esse cache pode impactar negativamente o funcionamento 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 processamento de elementos semelhantes na página.

Os blocos 17 a 21 são gravados com a ferramenta “Gravação”. Esses blocos contêm uma série de emulações de cliques do mouse e pressionamentos de teclas do teclado.

22. Bloco “Condição” verifica a condição especificada quanto à veracidade, após o que a execução do script 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 a (==)/ maior que (>)/ menor que (<) “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 – 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 – saída “Não”.

Neste caso, a condição estabelecida é: $Result. Ou seja, se apenas uma variável for especificada, ela é verificada como $true ou $false.

23. Bloco “Log” permite registrar mensagens arbitrárias e/ou valores de variáveis no log durante a execução do script do robô. Para este bloco, a propriedade “Valor” é especificada. Entre aspas, uma constante de texto é indicada, e o nome da variável começa com o símbolo $. Ou seja, este bloco registra no log do robô a mensagem “Autenticação” e a exibe no status.

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