Skip to content

Instantly share code, notes, and snippets.

@eliasalbuquerque
Last active January 15, 2024 20:00
Show Gist options
  • Save eliasalbuquerque/03d89bde34fd437cf2c68c28f3a2b537 to your computer and use it in GitHub Desktop.
Save eliasalbuquerque/03d89bde34fd437cf2c68c28f3a2b537 to your computer and use it in GitHub Desktop.
Curso Dev Aprender | Jhonatan de Souza

Desafio 2 - Selenium

Usando Selenium, navegar até a página de desafios e resolver o Desafio 2:

Código

# 202401 - Python 3.12.0
# MA_5.22 - Como CLICAR em BOTÕES E LINKS

import logging
import traceback
from time import sleep
from app import iniciar_driver
from selenium.webdriver.common.by import By

# DESAFIO

def desafio_2():
    logger = logging.getLogger(__name__)

    def clicar_elemento(xpath):
        elemento = driver.find_element(By.XPATH, xpath)
        driver.execute_script("arguments[0].click();", elemento)
        sleep(1)

    def preencher_elemento(xpath, preencher):
        elemento = driver.find_element(By.XPATH, xpath)
        elemento.send_keys(preencher)
        sleep(1)

    def scroll_pagina(valor):
        driver.execute_script("window.scrollTo(0, arguments[0]);", valor)
        sleep(1)

    site = 'https://cursoautomacao.netlify.app/'
    xpath_menu = '//button[@data-target="#navbarsExample04"]'
    xpath_desafio = '//a[@href="/desafios"]'
    nome = 'Elias Albuquerque'
    xp_dadosusuario = '//input[@id="dadosusuario"]'
    xp_cliqueaqui = '//button[@id="desafio2"]'
    xpath_validar = '//input[@id="escondido"]'
    xp_botao_validar = '//button[@id="validarDesafio2"]'
    
    try:
        '''
        preencher_elemento(elemento, xpath, preencher):
        clicar_elemento(elemento, xpath):
        scroll_pagina(valor):
        '''

        # nagegar ate o site
        driver = iniciar_driver(site_url=site, detach=True)
        sleep(1)

        try:
            clicar_elemento(xpath_menu)
        finally:
            clicar_elemento(xpath_desafio)

        # rolar janela
        scroll_pagina(485)

        # acessar campo de preenchimento desafio 2
        # preencher o nome
        preencher_elemento(xpath=xp_dadosusuario, preencher=nome)

        # clicar no botao 'clique aqui'
        clicar_elemento(xp_cliqueaqui)
        sleep(2)

        # desafio 2 bonus: campo escondido
        try:
            preencher_elemento(xpath=xpath_validar, preencher=nome)
            clicar_elemento(xp_botao_validar)
        finally:
            sleep(5)
            driver.close()

    except Exception as e:
        logger.error(
            f'Ao clicar em um elemento:\n- {type(e).__name__}: {e}'
            f'Stack trace: {traceback.format_exc()}'
        )
        print(f'Erro ao clicar em um elemento: {type(e).__name__}')
        driver.close()

desafio_2()

Passos:

  1. navegar até o site (argumento da função iniciar_driver() )
  2. tentar clicar no menu se estiver habilitado
  3. então clicar no botão Desafios
  4. preencher o campo nome
  5. clicar no botão Clique aqui
  6. Bônus: aparecerá mais um campo para preencher e validar:
  7. preencher o segundo campo nome
  8. clicar no botão Validar

Resultado Final

navegar até desafio 2, preencher o nome, enviar, preencher novamente o nome, validar.


GitHub: eliasalbuquerque/python-selenium

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment