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):
- Bloco “Início” (a partir deste bloco começa qualquer diagrama).
- 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).
- 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).
- 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”.
- 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.
e 7. Blocos “Clique com o mouse” realizam um clique no elemento especificado do aplicativo.
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).
- 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”.
- 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).
- 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”.
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).