O Selenium é uma ferramenta popular para automação de testes e navegação em sites. Com o Selenium WebDriver, você pode simular interações como um usuário real faria, como clicar em botões, preencher formulários e até capturar dados de uma página.
Para começar, instale o Selenium usando o pip
:
pip install selenium
Além disso, você precisará do driver para o navegador que deseja automatizar (por exemplo, ChromeDriver para Chrome ou GeckoDriver para Firefox). Baixe o driver e adicione o caminho ao seu sistema, ou especifique o caminho diretamente no código.
Vamos abrir o Google e pesquisar uma palavra-chave.
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
# Caminho para o driver (exemplo com Chrome)
driver = webdriver.Chrome(executable_path="caminho/para/chromedriver")
# Abrir o Google
driver.get("https://www.google.com")
# Localizar a barra de pesquisa, digitar uma consulta e pressionar Enter
search_box = driver.find_element("name", "q")
search_box.send_keys("Automação com Selenium")
search_box.send_keys(Keys.RETURN)
# Aguardar alguns segundos para ver o resultado
time.sleep(3)
# Fechar o navegador
driver.quit()
Neste exemplo:
- O Selenium abre o Google.
- Localiza a barra de pesquisa pelo seu atributo
name
. - Digita "Automação com Selenium" e pressiona Enter.
- Aguarda 3 segundos e fecha o navegador.
O Selenium permite interagir com quase qualquer elemento de uma página web. Aqui estão alguns métodos comuns para localizar elementos:
find_element_by_id("id")
find_element_by_name("name")
find_element_by_xpath("xpath")
find_element_by_class_name("class")
find_element_by_css_selector("css")
Aqui vamos simular um login automatizado.
from selenium import webdriver
import time
# Caminho para o driver (exemplo com Chrome)
driver = webdriver.Chrome(executable_path="caminho/para/chromedriver")
# Abrir a página de login
driver.get("https://www.example.com/login")
# Encontrar e preencher o campo de nome de usuário
username_box = driver.find_element("name", "username")
username_box.send_keys("meu_usuario")
# Encontrar e preencher o campo de senha
password_box = driver.find_element("name", "password")
password_box.send_keys("minha_senha")
# Clicar no botão de login
login_button = driver.find_element("css selector", "button.login")
login_button.click()
# Esperar para ver o resultado
time.sleep(5)
# Fechar o navegador
driver.quit()
Selenium também é útil para capturar dados de uma página. Suponha que queremos extrair os títulos dos resultados de pesquisa do Google.
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Chrome(executable_path="caminho/para/chromedriver")
# Acessar o Google e buscar uma palavra-chave
driver.get("https://www.google.com")
search_box = driver.find_element("name", "q")
search_box.send_keys("Selenium Python")
search_box.send_keys(Keys.RETURN)
# Esperar para carregar os resultados
time.sleep(2)
# Capturar os títulos dos resultados
titles = driver.find_elements("css selector", "h3")
# Imprimir os títulos
for title in titles:
print(title.text)
# Fechar o navegador
driver.quit()
Selenium permite abrir novas guias ou janelas, navegar entre elas e fechá-las.
# Abre uma nova guia
driver.execute_script("window.open('');")
driver.switch_to.window(driver.window_handles[1]) # Alterna para a nova guia
driver.get("https://www.python.org") # Abre o site desejado na nova guia
# Volta para a primeira guia
driver.switch_to.window(driver.window_handles[0])
Para capturar uma imagem da página atual:
driver.save_screenshot("screenshot.png")
O exemplo a seguir ilustra uma sequência mais completa. Vamos visitar um site de notícias, procurar uma palavra-chave e capturar os títulos das notícias.
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
# Inicializar o driver
driver = webdriver.Chrome(executable_path="caminho/para/chromedriver")
# Acessar o site de notícias
driver.get("https://www.example-news.com")
# Procurar uma palavra-chave (exemplo: "tecnologia")
search_box = driver.find_element("name", "q")
search_box.send_keys("tecnologia")
search_box.send_keys(Keys.RETURN)
# Esperar carregar os resultados
time.sleep(3)
# Capturar e exibir títulos das notícias
news_titles = driver.find_elements("css selector", ".news-title")
for title in news_titles:
print(title.text)
# Fechar o navegador
driver.quit()
- Espera explícita e implícita: Em vez de
time.sleep
, use esperas explícitas (WebDriverWait
) para esperar por um elemento específico. - Configuração do ambiente: Certifique-se de baixar a versão correta do driver para o navegador e plataforma que você está usando.
Esses exemplos cobrem os principais casos de uso do Selenium para automação de navegação na web. Com ele, é possível automatizar tarefas repetitivas e até criar scripts de teste complexos para aplicativos web.