1. Introdução à interação com elementos de formulários
Formulários em páginas da web são onde começa a mágica da interação. Imagine um formulário como um controle remoto misterioso que permite ao usuário interagir com o sistema. Mas em vez de dar instruções a um robô aspirador, estamos enviando informações para um site.
Como inserir texto em campos de texto
Para começar, vamos falar sobre como o Selenium nos permite
inserir texto em campos de texto. Isso é feito usando o
método send_keys()
. Vamos mergulhar nisso
passo a passo.
from selenium import webdriver
# Definimos o caminho para o web driver, é o caminho para sua cópia do webdriver
driver = webdriver.Chrome(executable_path='path/to/chromedriver')
# Abrimos a página da web
driver.get('http://example.com/login')
# Encontramos o campo de entrada (por exemplo, por id) e inserimos o texto
username_field = driver.find_element_by_id('username')
username_field.send_keys('minha_conta_super_top')
password_field = driver.find_element_by_id('password')
password_field.send_keys('minha_senha_super_secreta')
Neste exemplo simples, abrimos uma página, localizamos os
elementos de entrada por seu ID
. Depois disso, usamos o método
send_keys()
para passar texto para nossos campos.
Sim, é tão fácil quanto dar um copy-paste em outro nível!
Uma dica importante para preencher campos de texto
Se você acha que o formulário está se comportando de forma
estranha, é possível que já exista texto no campo de entrada.
Antes de inserir um novo texto, limpe o antigo usando o método clear()
.
username_field.clear()
username_field.send_keys('novo_valor')
Essa pequena dica vai te poupar de dores de cabeça desnecessárias, pode confiar!
2. Clicando em botões
Agora que nossos campos de entrada estão preenchidos, é hora
de clicar em um botão, por exemplo, para enviar o formulário.
Com o Selenium, isso é feito usando o método click()
.
É como quando clicamos no botão "Ver mais memes", só que programaticamente.
# Encontramos o botão pelo seu nome e clicamos
login_button = driver.find_element_by_name('login')
login_button.click()
E assim, nosso script Selenium se tornou o mestre dos cliques, capaz de muito mais do que clicar no botão "Fazer escolha" nos jogos!
Exemplos de uso
Vamos considerar um exemplo que combina o uso dos métodos
send_keys()
e click()
para preencher e enviar um formulário de registro.
# Abrimos a página de registro
driver.get('http://example.com/register')
# Preenchemos o formulário de registro
driver.find_element_by_id('first_name').send_keys('João')
driver.find_element_by_id('last_name').send_keys('Silva')
driver.find_element_by_id('email').send_keys('joao@example.com')
driver.find_element_by_id('password').send_keys('superSecreta123')
# Clicamos no botão "Registrar"
register_button = driver.find_element_by_css_selector('.register-button')
register_button.click()
Este exemplo simples mostra como você pode automatizar o processo de registro em um site. Isso pode ser útil para testar um formulário de registro ou simular a atividade dos usuários.
3. Lidando com formulários temperamentais
Às vezes as páginas gostam de pregar peças na gente. Você clica no botão e nada acontece. Ou pior — a página dá erro. Vamos discutir alguns problemas comuns e como resolvê-los.
Trabalhando com elementos dinâmicos
Algumas vezes os elementos em uma página não carregam imediatamente. Nesses casos, seu script pode tentar interagir com um elemento antes que ele seja carregado. É como começar a fazer um omelete antes de tirar os ovos da geladeira.
Para evitar esses problemas, use esperas. O Selenium permite que você espere até que um elemento esteja disponível:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# Esperamos até que o elemento esteja clicável antes de clicar
register_button = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.CSS_SELECTOR, '.register-button'))
)
register_button.click()
Com o WebDriverWait
, você pode instruir o Selenium a esperar até que o elemento
esteja pronto para ser usado. Isso aumenta bastante a confiabilidade
do seu script.
Interagindo com elementos invisíveis
Alguns elementos na página podem estar invisíveis — como botões ou campos ocultos. Isso pode causar erros ao tentar interagir com eles. Nesse caso, você pode tornar o elemento visível usando JavaScript:
driver.execute_script("arguments[0].style.visibility='visible';", hidden_element)
hidden_element.click()
Esse método permite que você interaja com elementos que, por algum motivo, estão escondidos.
4. Aplicação prática: automação de formulários
Agora que entendemos como interagir com formulários, vamos pensar onde isso pode ser usado na vida real.
Seu chefe decidiu que todos devem preencher relatórios diários através de um formulário na web. E você, claro, quer automatizar um pouco esse processo chato. Usando o Selenium, você pode criar um script que preenche e envia automaticamente o formulário com os dados do seu relatório todos os dias.
Exemplo de automação de relatório
Imagine que temos um site com um formulário para relatório diário. O formulário inclui campos para seu nome, departamento e o relatório do trabalho concluído. Vamos automatizar isso:
driver.get('http://example.com/daily_report')
# Preenchemos o formulário do relatório
driver.find_element_by_id('name').send_keys('Ana Oliveira')
driver.find_element_by_id('department').send_keys('Tecnologia')
driver.find_element_by_id('report').send_keys('Hoje corrigi todos os bugs!')
# Enviamos o formulário
submit_button = driver.find_element_by_id('submit')
submit_button.click()
Um script desses pode economizar um tempo precioso e eliminar possíveis erros humanos. Lembre-se de que para formulários mais complexos é necessário testar cada etapa e levar em conta possíveis erros.
Assim, chegamos ao fim da nossa aula de hoje! Hoje aprendemos a digitar em campos e clicar em botões como verdadeiros sistemas de formulários online, o que te dá um poder incrível de automação nas suas interações com as páginas da web.
Continue experimentando com o Selenium e fique ligado para aprender mais sobre como transformar seu navegador em uma verdadeira máquina de automação!
GO TO FULL VERSION