POO e Selenium

POO e Selenium

Olá a todos! Nesta ocasião continuaremos com o conteúdo de testes de automação com Selenium e focaremos em alguns critérios muito úteis, como detecção de erros nos drivers do meu navegador, Programação Orientada a Objetos (POO), classes, métodos e funções.


Criando nosso código com o navegador Firefox

Como primeiro passo, verificaremos a versão do navegador. Para fazer isso, entramos na seção Configurações, conforme mostrado na imagem a seguir:

Interfaz de usuario gráfica, Aplicación, Correo electrónico

Descripción generada automáticamente

Eu marquei a versão do navegador:

Interfaz de usuario gráfica, Texto, Aplicación, Correo electrónico

Descripción generada automáticamente


A seguir, procuramos o driver do navegador inserindo Gecko Driver na pesquisa. Você pode obter o driver aqui.

Como resolver problemas de incompatibilidade em navegadores

Um dos erros mais comuns quando inicializamos nosso projeto (e ao executá-lo) é a incompatibilidade na versão do navegador. Isso gera um erro como este:

Texto

Descripción generada automáticamente


Como pode ser visto na imagem acima, inicializei meu projeto e ocorreram esses erros. Portanto a mensagem é exibida:

    1678737408688 geckodriver INFO Listening on 127.0.0.1:47986” y “1678737409590 mozrunner::runner INFO Running command: "C:\\Program Files\\Mozilla Firefox\\firefox.exe" "--marionette" "-no-remote" "-profile" "C:\\Users\\marce\\AppData\\Local\\Temp\\rust_mozprofile4LyXvM".

Esta mensagem mostra o comando executado. Como em todas as tecnologias, devemos considerar que, todos os anos, teremos novas atualizações (como neste caso, onde a versão não é mais compatível com Selenium), por isso não nos permite executar o nosso projeto.

Resolver esse erro no console é simples. Basta realizar os passos que mencionamos para instalação do driver e certificar-se de colocar o novo arquivo no caminho onde indicou que seu navegador será inicializado. Preparar!

System.setProperty("webdriver.gecko.driver", "C:\\Users\\marce\\OneDrive\\Documentos\\AUTOMATIZACION\\lib-firefox\\geckodriver.exe" );

A seguir, criamos nossa classe para inicializar nosso navegador. Lembrar: criar seu projeto > criar seus pacotes > criar suas classes.

Exemplo de classe com navegador Firefox

package com.pruebas.automatizacion2;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.firefox.FirefoxDriver;

public class NavegadorFirefox {

public static void main(String[] args) {

// TODO Auto-generated method stub

System.setProperty("webdriver.gecko.driver", "C:\\Users\\marce\\OneDrive\\Documentos\\AUTOMATIZACION\\lib-firefox\\geckodriver.exe" );

//instanciar navegador

WebDriver driver = new FirefoxDriver();

driver.get("https://www.google.com/");

driver.manage().window().maximize();

driver.close();

}

}

POO

Para criar nossos scripts é necessário entender um pouco de programação Java. A base para isso é ter conhecimento de Programação Orientada a Objetos (POO), classes, métodos, funções, tipos de dados e atributos, entre outros. Vamos ver um pouco a que se referem esses conceitos e como colocá-los em prática.

O que é a Programação Orientada a Objetos ou POO?

POO é um paradigma de programação que nos dá ajuda ou orientação sobre como podemos desenvolver de forma clara e estruturada. Pode ser utilizado em diferentes linguagens de programação, dependendo da necessidade ou arquitetura.

Na Programação Orientada a Objetos, o objetivo principal é mobilizar o foco da lógica e focar nos objetos. Trabalhar com POO facilita muito o desenvolvimento de sistemas robustos, já que pensamos em grandes componentes, interações e relacionamentos entre os componentes da aplicação.

Todo o programa é executado quando os objetos interagem entre si.

Os 4 Princípios da Programação Orientada a Objetos são:

1. Encapsulamento

Seu principal objetivo é manter dentro de si todas as informações-chave de um objeto e somente ser utilizado quando a informação for previamente solicitada para sua interação.

2. Abstracción

Es un principio que permite, de manera simple, ver la forma en la que un usuario interactúa con un objeto complejo en un desarrollo de software.

3. Herança

Permite a criação de relacionamentos hierárquicos entre classes, para que atributos e métodos comuns possam ser reutilizados.

A herança em POO é o princípio que permite criar relacionamentos hierárquicos entre classes, e assim métodos e atributos podem ser reutilizados em diferentes ocasiões quando o desenvolvimento assim o solicitar.

4. Polimorfismo

O polimorfismo na POO torna mais fácil para um objeto interagir de diferentes maneiras.

O que é uma classe em Java?

Uma classe é uma construção usada como modelo para criar objetos desse tipo.

Quais são os elementos de uma classe em Java?

  • Construtores.
  • A frase ou instrução package.
  • A sentença import.
  • Comentários.
  • Declarações e definições de classe.
  • Variáveis.
  • Métodos.

O que são atributos?

Atributos são as partes individuais que permitem diferenciar um objeto de outro. Eles são salvos em variáveis, por exemplo: int quantidade = 2; String usuário = “Marcela Amaya”;

Aqui podemos ver como os atributos são salvos dentro das variáveis ​​declaradas.

O que é um método?

Um método em Java é um conjunto de instruções definidas dentro de uma classe, que executam uma função e que podemos invocar pelo nome para realizar uma determinada ação.

Quando trabalhamos com métodos devemos considerar o seguinte:

  • Todo desenvolvimento em Java contém um método main. Todos os programas Java devem começar com este método para sua execução, que é a entrada e a saída da aplicação.
  • Um método começa quando representado por uma chave { e sua conclusão é indicada pela chave oposta }. Também é possível quando usamos a palavra-chave return.
  • A palavra return pode estar em qualquer lugar do método, portanto não é obrigatório que seja sempre utilizado por último.
  • Dentro de um método podemos invocar outro método.
  • Os métodos em Java sempre pertencem a uma classe.

1. Estrutura de um método Java    

[acceso] tipoDeDado nomeMetodo([parametros]) [Exceções]

{

// bloco de instruções

[return resultado;]

}

  • acesso (opcional): especifica o tipo de acesso ao método.
  • tipoDeDado: especifica o tipo de dados ou valor que esse método retorna.
  • nombreMetodo: é o nome dado ao método.
  • parâmetros (opcional): Eles também são chamados de dados de entrada e têm como principal função indicar ao método se ele utilizará parâmetros de entrada para sua execução. Um método pode receber um ou mais parâmetros, portanto o tipo do parâmetro deve ser especificado. Se neste caso o método não aceita parâmetros ou argumentos, os parênteses deverão estar sempre presentes, só que neste caso estarão vazios.
  • Exceções (opcional): é um sinalizador de exceção que nosso método pode conter. Muitas vezes, o IDE pode sugerir isso.
  • return: é usado para retornar um valor. Algumas características de retorno dentro de um método:

-É colocado após uma expressão que avaliaremos para obter dados de return. Esta expressão pode ser um tipo de dados primitivo ou uma constante.

-O tipo do valor deve corresponder ao tipoDeDado que foi indicado na declaração do método. Por exemplo, sim tipoDeDado é um int então return é um int.

- Se um método não retornar nada (tipoDeDado = void), a instrução return é opcional para o usuário, pois não aguardamos o retorno de nenhum tipo de dado.

2. Implementando um método em Java

As etapas para implementar um método são:Especificar lo que el método debería hacer.

  • Declare as entradas do método.
  • Defina os tipos de dados de entrada que o método esperaria.
  • Defina os dados que o método deve retornar e seu tipo.
  • Coloque as instruções que permitirão a criação do método (você pode basear-se no exemplo anterior).

Exemplo de método: Temos o método chamado adiçãoDados (Sumadatos em espanhol), que receberá dois inteiros e como resultado retornará sua soma.

import java.util.Scanner;

public class ExemploMetodo{

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

int num1, num2, resultado;

System.out.print("Digite o primeiro numero: ");

num1 = sc.nextInt();

System.out.print("Digite o segundo numero: ");

num2 = sc.nextInt();

resultado = suma(num1, num2);

System.out.println("Suma: " + resultado);

}

//método sumaDados

public static int suma(int a, int b){

int c;

c = a + b;

return c;

}

}

O método é chamado adiçãoDados. Ele recebe dois inteiros aeb que são os argumentos de entrada. O método retorna um valor do tipo int.

O fluxo do programa executado é o seguinte:

  • No método main, quando chamamos o método adiçãoDados, os valores das variáveis num1 e num2 são copiados nas variáveis ​​a e b. As variáveis ​​a e b são os argumentos do método.
  • O fluxo de execução do programa passa para o método adiçãoDados.
  • O método soma os dois números e salva o resultado em c.
  • O método retorna, através da instrução return, a soma calculada.
  • Conclua a execução do método.
  • O fluxo de execução continua no método main de onde o método foi produzido adiçãoDados.
  • O valor retornado pelo método é o que está atribuído à variável resultado no método main.

No exemplo acima, o método adiçãoDados Ele não retorna um valor inteiro que iremos exibir. Nesta opção, poderíamos ter feito a chamada do método diretamente dentro de:

System.out.println:

System.out.println("Soma: " + adiçãoDados (num1, num2));


Nós chegaremos aqui. Espero que você tenha aprendido um pouco sobre Programação Orientada a Objetos. No próximo post colocaremos em prática o que aprendemos, focando em testes automatizados, mas é necessário ter visto um pouco esse tópico de OOP para continuar com o aprendizado sem problemas.

Lemos em breve!

💡
As opiniões e comentários expressos neste artigo são de propriedade exclusiva de seu autor e não representam necessariamente o ponto de vista da Revelo.

A Revelo Content Network acolhe todas as raças, etnias, nacionalidades, credos, gêneros, orientações, pontos de vista e ideologias, desde que promovam diversidade, equidade, inclusão e crescimento na carreira dos profissionais de tecnologia.