RPA Web No Navegador Edge Com Java e Selenium
- #Automação
- #Java
- #Selenium
Caro trabalhador deste país, você como eu sabe que a maioria das atividades executadas na labuta são tarefas monótonas, repetitivas e que carecem da necessidade de inteligência humana.
Sendo assim uma forma de se livrar dessas tarefas para poder concentrar o seu tempo e esforços em atividades que realmente precisam de você, é automatizando esses processos. Automatizar nesse contexto significa ter um software programado para executar uma ou mais tarefas (abrir, baixar e fechar arquivos, pesquisar na internet, acessar sites, tomar decisões a partir de um critério e etc), com uma frequência de tempo e sem precisar de você.
Além de automatizar tarefas em aplicativos disponíveis em seu computador, você também pode automatizar o acesso ao seu navegador. Como exemplo, em tarefas em que é necessário buscar um dado disponível na Internet.
Preparei uma forma de fazer isso usando framework Selenium e a plataforma Java. Nosso estudo de caso será 1 (um) acesso diário a página do ONS (Operador Nacional do Sistema Elétrico) disponível na Web para baixar o arquivo .xls com os dados de Linhas de Transmissão.
Para prosseguir você deverá conhecer o básico do básico de Java e ter instalado a IDE Eclipse no seu computador com o JDK funcionando.
Lembrando que isso pode ser feito com qualquer linguagem e em qualquer IDE desde que use os frameworks apropriados para a linguagem desejada.
## Passo 1 - Baixe Os arquivos WebDriver e Selenium
Você deverá baixar o arquivo WebDriver do navegador de sua preferência. Abaixo está disponível o link para baixar o WebDriver do navegador Edge:
|Edge| -> (https://developer.microsoft.com/pt-br/microsoft-edge/tools/webdriver?form=MA13LH#downloads)|
Nesse tutorial conforme titulo vamos utilizar o navegador Edge.
Você também deverá baixar o Selenium disponível em: Downloads | Selenium
## Passo 2 - Crie Um Projeto Java No Eclipse e Prepare O Ambiente
Após baixar o arquivo WebDriver do Edge, descompacte a pasta e coloque todo o conteúdo em uma diretório. Faça o mesmo com o arquivo baixado do Selenium.
No meu caso eu criei um diretório Selenium/web-drives/edgedriver-win64, conforme imagem:
No Eclipse crie um projeto Java, depois um pacote com o nome de sua preferência e adicione uma classe com o método main.
Com botão direito e o cursor em cima do projeto criado, vá para Build Path --> Configure Build Path --> Libraries e dentro do ClassPath adicione os aquivos JARs externo que vieram no arquivo Selenium que você baixou:
NOTE:
Para não ter problemas na geração do arquivo final **.jar**, exclua os arquivos: **CHANGELOG, LICENSE e NOTICE** quando for selecionar os arquivos JARs.
O executável do Web Driver do Edge é configurado no sistema dentro da própria classe main a ser executável código abaixo:
// Especifique o local do driver do Edge (arquivo .exe baixado no web driver)
System.setProperty("webdriver.edge.driver","C:\\Program Files\\Selenium\\web-drivers\\edgedriver_win64\\msedgedriver.exe")
## Passo 3 - Classes e Métodos Básicos
Abaixo temos o codigo de exemplo comentado. Cada elemento da página foi localizado com By.xpath.
package main;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
import java.time.Duration;
import java.time.LocalDate;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
public class AutomacaoONS {
public static void main(String[] args) {
//Criar variavel que armazene a data atual
LocalDate dataHoje = LocalDate.now();
// Especifique o local do driver do Edge (arquivo .exe baixado no web driver)
System.setProperty("webdriver.edge.driver",
"C:\\Program Files\\Selenium\\web-drivers\\edgedriver_win64\\msedgedriver.exe");
// Inicialize o WebDriver
WebDriver driver = new EdgeDriver();
// Navegue até o site desejado
driver.get("https://dados.ons.org.br/dataset/linha-transmissao");
//Criar uma variavel WebElement que localize o elemento HTML pelo path
WebElement pesquisar1 = driver.findElement(By.xpath("//*[@id=\"dataset-resources\"]/ul/li[3]/a"));
pesquisar1.click();
// Esperar até que o campo de pesquisa esteja visível e interagível
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(1));
wait.until(ExpectedConditions
.visibilityOfElementLocated(By.xpath("//*[@id=\"content\"]/div[3]/section/div/div[1]/ul/li/div/a")));
//Criar uma variavel WebElement que localize o segundo elemento HTML pelo path
WebElement pesquisar2 = driver.findElement(By.xpath("//*[@id=\"content\"]/div[3]/section/div/div[1]/ul/li/div/a"));
// pesquisar2.click();
/* Baixar o arquivo pela URL informada no elemento 2 */
//Salvar a URL contida no botão
String fileURL = pesquisar2.getAttribute("href");
//Strig com o caminho do diretório que desejo salvar o arquivo
String saveDir = "C:\\Users\\anapa\\OneDrive\\programação\\RPA\\automacao-ons";
try {
URL url = new URL(fileURL);
ReadableByteChannel rbc = Channels.newChannel(url.openStream());
FileOutputStream fos = new FileOutputStream(saveDir + "/LINHA_TRANSMISSAO_" + dataHoje + ".xlsx");
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
fos.close();
rbc.close();
System.out.println("Download concluído.");
} catch (IOException e) {
e.printStackTrace();
}
driver.quit();
}
}
## Passo 4 - Criar Arquivo Final .jar
Para criar o arquivo final .jar com o botão direito no projeto vá para Export -> Runnable JAR File -> Next e em Launch configuration localize a sua classe Main.
Em Export destination indique o caminho que você quer salvar o arquivo + nome_do_arquivo.jar.
Configure conforme imagem abaixo:
Depois de finish o arquivo .jar estará na pasta.
## Passo 5 - Agendador de Tarefas do Windows
Agora vamos usar o Agendador de Tarefas do Windows parar fazer com que esse arquivo .jar compile uma vez ao dia às 13:00.
No agendador de tarefas vá em **Ação -> Criar Tarefa**
Configure conforme imagens:
Em ações clique em **Novo**:
Em Programa/script você deverá buscar o arquivo **java.exe** dentro da pasta da **JRE** ou da **JDK**.
Em adicione argumentos você deverá colocar o arquivo .jar do programa que você criou com o argumento -jar
-jar nome_do_arquivo.jar
Clique em OK e pronto sua tarefa estará criada e seu código rodará todos os dias no horário especificado.
Como ficou a pasta após dois dias de uso:
Lembrando que ele foi programado para ser executado quando a máquina estava ligada.
## Concluindo...
Perceba que isso é um caso bem simples porém completo e que você pode aplicar a ideia em situações mais complexas de acordo com a sua necessidade.