Use Python

Downloads

Introdução à Automação Web (usando Selenium)

Realizar tarefas repetitivas é uma perda de tempo, mas felizmente, temos robôs à disposição para simplificar essas tarefas. Para automatizar interações na web, podemos contar com o Selenium, em conjunto com Python

Instalação de pacotes

Instalar os pacotes selenium e webdriver-manager no pelo pip

pip install selenium webdriver-manager

Realizar o passo a passo

Geração do código para nosso pequeno robô

Abrir o navegador

Importação do WebDrive da biblioteca do Selenium

from selenium import webdriver

Podemos criar o drive como Google Chrome driver = webdriver.Chrome() ou Mozilla Firefox driver = webdriver.Firefox() juntamente com a opção de não apresentar a interface gráfica

Adicionando a chamada para o webdriver_manager instalar o webdrive automaticamente

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager

options = Options()
options.add_argument("--headless")
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()), options = options)

ou com Firefox

from selenium import webdriver

from selenium.webdriver.firefox.service import Service as FirefoxService
from webdriver_manager.firefox import GeckoDriverManager

fireFoxOptions = webdriver.FirefoxOptions()
fireFoxOptions.add_argument('-headless')
driver = webdriver.Firefox(service=FirefoxService(GeckoDriverManager().install()), options=fireFoxOptions)
url = "https://www.google.com/"
driver.get(url)

Usando as opções disponíveis em Query By com o Query Selector para encontrar o campo de busca na página do Google

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

searchField = WebDriverWait(driver, 10).until(
  EC.presence_of_element_located((By.CSS_SELECTOR, "[name=q]"))
)

Tirando uma foto

driver.save_screenshot("open.png")

Redimensionar janela do navegador

driver.set_window_size(1800, 1200)

Tirar um screenshot da tela ampliada

driver.save_screenshot("max.png")

Digitando texto na caixa

Digitar a palavra “orange” na caixa de busca e digitar <Enter>

searchField.send_keys("orange")
searchField.send_keys(Keys.ENTER)

Esperar por 10 segundos

time.sleep(10)

Tirar um screenshot do resultado da busca

driver.save_screenshot("search.png")

Clicando no elemento

Localizando o link para as imagens pelo seletor de CSS

imageTab = driver.find_element(By.CSS_SELECTOR, "#top_nav a")
imageTab.click()

Tirar um screenshot das imagens

driver.save_screenshot("imagens.png")

Compilado

Compilado para executar de forma invisível (headless) no Chrome

import time

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options

from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# Main
def main():
  # Iniciar Webdriver
  options = Options()
  options.add_argument("--headless")
  driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()), options=options)

  # Acessar endereço
  driver.get("https://www.google.com/")

  # Esperar até a caixa de busca aparecer
  searchField = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, "[name=q]"))
  )

  # Tirar um screenshot
  driver.save_screenshot("open.png")

  # Alterar o tamanho da tela
  driver.set_window_size(1800, 1200)

  # Tirar um screenshot da tela ampliada
  driver.save_screenshot("max.png")

  # Digitar a palavra "orange" na caixa de busca e digitar <Enter>
  searchField.send_keys("orange")
  searchField.send_keys(Keys.ENTER)
  # Esperar por 10 segundos
  time.sleep(10)
  # Tirar um screenshot do resultado da busca
  driver.save_screenshot("search.png")

  # Clicar para a aba de Imagens
  imageTab = driver.find_element(By.CSS_SELECTOR, "#top_nav a")
  imageTab.click()
  # Tirar um screenshot das imagens
  driver.save_screenshot("imagens.png")

  # Fechar o navegador
  driver.quit()

if __name__ == "__main__":
  main()