Selenium Webdriver
Com Python
Selenium Projects
Manipula navegadores Web
Selenium Webdriver nativamente, suportando várias
linguagens de programação.
Extensão do Chrome, Firefox e Edge.
Selenium IDE gravar e reproduzir interações com o
navegador.
Usa o Selenium Webdriver para
Selenium Grid rodar testes em várias máquinas ao
mesmo tempo.
Selenium Webdriver
É uma Biblioteca / Módulo para interagir com navegadores
Também pode ser considerado uma API
Usado para automatizar testes de GUI
Graphic User Interface
Como funciona...
AUTOMATION CODE WEBDRIVER BROWSER
Selenium 3
W3C
[Link]
Selenium 4
W3C
[Link]
[Link]
Baixando e instalando o
Python e PyCharm
[Link]
[Link]
Baixando e instalando o
VS Code
[Link]
Baixando os Drivers dos
navegadores
e colocar em uma pasta chamada "webdrivers" ou "drivers" no C:
[Link]
Criando Ambientes
Vituais no Python
Usando PyCharm e VSCode
Configurando o
Selenium Webdriver
e criando seu primeiro script
[Link]
Mapeando
Elementos da tela
Primeiros Passos
Mapeando
Elementos da tela
Tipos de Locators
Locators
Tag Atributo Valor Atributo Valor
Estrutura de um elemento
Tipos de Locators
Selenium Webdriver
Locators Locators customizáveis
ID NAME LINK_TEXT PARTIAL_LINK_TEXT CSS_SELECTOR XPATH
Tag and ID
Tag and Class
CLASS_NAME TAG_NAME Tag and Attribute
Tag, Class and Attribute
Inner Text
Locators
Tag Atributo Valor Atributo Valor
[Link]
browser.find_element([Link], "password")
Locators
Tag Atributo Valor Atributo Valor
[Link]
browser.find_element([Link], "password")
Locators
href: atributo de link Link text
By.LINK_TEXT
browser.find_element(By.LINK_TEXT, "Twitter")
Locators
href: atributo de link Link text
By.PARTIAL_LINK_TEXT
browser.find_element(By.PARTIAL_LINK_TEXT, "Twi")
Locators
Tag Atributo Atributo Valor
By.CLASS_NAME Encontra a primeira ocorrência
browser.find_element(By.CLASS_NAME, "input_error form_input")
browser.find_elements(By.CLASS_NAME, "input_error form_input")
Retorna todas as ocorrências
Locators
Tag Atributo Atributo Valor
By.TAG_NAME Encontra a primeira ocorrência
browser.find_element(By.TAG_NAME, "input")
browser.find_elements(By.TAG_NAME, "input")
Retorna todas as ocorrências
Locators
Tag Atributo Atributo Valor
By.CSS_SELECTOR
tag_name#id_value (tag é opcional)
browser.find_element(By.CSS_SELECTOR, "input#password")
browser.find_element(By.CSS_SELECTOR, "#password")
Locators
Tag Atributo Atributo Valor
By.CSS_SELECTOR
tag_name.class_value (tag é opcional)
browser.find_element(By.CSS_SELECTOR, "input.input_error")
browser.find_element(By.CSS_SELECTOR, ".input_error")
Locators
Tag Atributo Atributo Valor
By.CSS_SELECTOR
tag_name[attribute=value] (tag é opcional)
browser.find_element(By.CSS_SELECTOR, "input[type=password]")
browser.find_element(By.CSS_SELECTOR, "[type=password]")
Locators
Tag Atributo Atributo Valor
By.CSS_SELECTOR
tag_name.class_name[attribute=value]
browser.find_element(By.CSS_SELECTOR, "input.input_error[type=password]")
XPath
XPath é uma sintaxe para definir partes de um documento XML
XPath pode ser usado para navegar por elementos e atributos em um documento XML
XPath usa expressões de caminho para navegar em documentos XML
XPath contém uma biblioteca de funções padrão
XPath é usado para localizar elementos em uma página web por meio do DOM
XPath é o endereço do elemento em uma página
[Link]
XPath
Absolute/Full XPath
Relative/Partial XPath
COMANDOS
Comandos de navegação
Comandos da aplicação
Comandos de localizar elementos
Comandos condicionais
Comandos de interação com elementos
Comandos de espera
COMANDOS DE NAVEGAÇÃO
browser.
get()
maximize_window()
refresh()
back()
forward()
close()
quit()
COMANDOS DA APLICAÇÃO
browser.
title
current_url
page_source
COMANDOS PARA LOCALIZAR ELEMENTOS
browser.
find_element()
find_elements()
COMANDOS CONDICIONAIS
element.
is_displayed()
is_enabled()
is_selected()
Retorna True ou False
COMANDOS DE INTERAÇÃO COM
ELEMENTOS
element.
click()
send_keys()
text
get_attribute()
COMANDOS DE ESPERA (WAIT)
element.
[Link]()
implicitly_wait
explicitly_wait
Pytest
O que é o PyTest?
PyTest é um framework de teste que permite escrever códigos de teste usando a linguagem Python. Ele te ajuda a
escrever casos de teste simples e escaláveis para bancos de dados, APIs ou interface do usuário.
Algumas das vantagens do pytest são:
Muito fácil de começar devido à sua sintaxe simples e fácil.
Pode executar testes em paralelo.
Pode executar um teste específico ou um subconjunto de testes
Detectar testes automaticamente
Ignorar testes
Pytest
Para instalar: pip install pytest
O pytest identifica quais são os casos de teste automaticamente desde
que o nome dos métodos de teste estejam no seguinte formato:
test_*.py ou *_test.py
Documentação: [Link]
Page Object
A ideia do PageObject é separar os elementos em arquivos diferentes baseados nas páginas
em que eles aparecem, assim, escrevemos todos os elementos e métodos específicos
daquela página em seu arquivo que é uma classe e usamos diretamente nos scripts de teste.
# Fazendo login (sem page object)
driver.find_element([Link], "user-name").send_keys("standard_user")
driver.find_element([Link], "password").send_keys("secret_sauce")
driver.find_element([Link], "login-button").click()
# Fazendo login (com page object)
login_page.fazer_login("standard_user", "secret_sauce")