Utilizando o Selenium para testes de interface com Python 3

Com Selenium conseguimos manipular diferentes navegadores através de seu WebDriver a fim de simular interação dos usuários.

PDO com PHP: Aprenda a fazer um CRUD com MySQL

Selenium em poucas palavras é um framework que nos permite realizar testes de interface para aplicações web, com ele conseguimos simular ações do usuário, como, por exemplo, fazer o login em uma conta, criar um cadastro e realizar uma compra.

O Selenium por si só não tem recursos para nos dizer se algo está funcionando como deveria, ou seja, ele não testa o comportamento e resultado das ações programadas, para isso vamos utilizar uma outra biblioteca chamada de Pytest juntamente com seu complemento o Pytest HTML.

Tanto o Pytest quanto o Pytest HTML, são bibliotecas destinadas a testes, dessa forma conseguimos juntá-las ao Selenium e criar relatórios e testes mais robustos e precisos, deixando claro o que está funcionando ou não.

Caso você não conheça sobre testes automatizados e Pytest, nós temos um artigo que fala sobre esse assunto.

Criando o ambiente virtual

Primeiramente vamos precisar criar nosso ambiente para instalar as bibliotecas, para isso, crie uma pasta no seu computador e abra o terminal dentro desse diretório.

Rode os comandos abaixo dentro da pasta para criar e ativar o ambiente virtual.

python -m venv .

Se estiver no Windows, rode:

source Scripts/activate

Se estiver no Linux, rode:

source bin/activate

Instalando o Selenium e o Pytest

Com o ambiente virtual ativo, vamos agora instalar o Pytest, Pytest HTML e o Selenium, para isso, ainda com o terminal aberto, rode os comandos PIP abaixo.

Para instalar o Selenium:

pip install selenium

Para instalar o Pytest:

pip install pytest

Para instalar o Pytest HTML

pip install pytest-html

Videoaula completa de Selenium e Pytest

Agora que você já tem seu ambiente montado e as bibliotecas instaladas, confira nossa aula complementar completa, ensinando passo a passo como criar um teste de login no Github.

Códigos de automação com Selenium e Pytest

Agora que você já assistiu a nossa aula, confira o código de teste utilizado abaixo.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

import time

class TestLogin:

    def setup_class(self):
        global driver
        driver = webdriver.Chrome()
        driver.maximize_window()

    def test_login(self):
        #Define qual página o browser deve abrir
        driver.get('https://github.com')

        #Procuramos pelo link de login
        btn_link_sign_in = driver.find_element(By.CLASS_NAME, 'HeaderMenu-link--sign-in')
        #Simulamos o clique no link
        btn_link_sign_in.click()

        #Realizamos uma captura de tela
        driver.save_screenshot('screen_00.png')

        #Aguarda dois segundos
        time.sleep(2)

        field_login = driver.find_element(By.ID, 'login_field')
        field_login.send_keys('email@satellasoft.com')

        field_password = driver.find_element(By.ID, 'password')
        field_password.send_keys('adminadmin')

        #Realizamos uma captura de tela
        driver.save_screenshot('screen_01.png')

        field_password.send_keys(Keys.RETURN)

        #Aguarda dois segundos
        time.sleep(2)

        label_result = driver.find_element(By.CLASS_NAME, 'js-flash-alert')

        #Realizamos uma captura de tela
        driver.save_screenshot('screen_02.png')

        print(label_result.text)

        assert 'Incorrect username or password' in label_result.text
        #assert 'meu email está errado' in label_result.text

    def teardown_class(self):
        driver.close()

 

Referências

https://selenium-python.readthedocs.io/installation.html

https://selenium-python.readthedocs.io/getting-started.html#using-selenium-to-write-tests

https://github.com/SeleniumHQ/docker-selenium

https://github.com/SeleniumHQ/selenium