Formulário de contato

Nome

E-mail *

Mensagem *

Este blog é um complemento do nosso canal no YouTube. Clique em @CanalQb para seguir e acompanhar nossos vídeos!

Imagem

Corrigindo o erro WebDriver: find_element_by_xpath no Selenium

Corrigindo o erro WebDriver: find_element_by_xpath no Selenium

Publicado por em

@CanalQb Python: Como corrigir o erro de atributo find_element_by_xpath no Selenium
@CanalQb

Erro find_element_by_xpath no Selenium WebDriver: como resolver corretamente

Se você está enfrentando o erro AttributeError: 'WebDriver' object has no attribute 'find_element_by_xpath' ao usar Selenium com Python, a causa provavelmente está relacionada ao uso de métodos obsoletos. A biblioteca Selenium deixou de suportar métodos como find_element_by_xpath a partir da versão 4.3.0.

Para evitar esse erro, o código precisa ser atualizado para usar o novo formato recomendado. Neste post, mostramos como fazer essa transição corretamente e garantir que seu código continue funcional.

Importando o WebDriver corretamente no Selenium

O primeiro passo é importar corretamente os módulos necessários no início do seu script. Certifique-se de ter a instalação atualizada do Selenium e use os imports corretos:

from selenium import webdriver
from selenium.webdriver.common.by import By

Depois disso, crie uma instância do navegador com a classe desejada:

browser = webdriver.Chrome()

Atualizando o uso de métodos obsoletos no Selenium

O método find_element_by_xpath() deve ser substituído por find_element() com o argumento By.XPATH. Veja como fica o código atualizado:

from selenium import webdriver
from selenium.webdriver.common.by import By

browser = webdriver.Chrome()
elemento = browser.find_element(By.XPATH, '//span[@id="faucet_balance"]')

Com essa alteração, seu script funcionará com as versões mais recentes da biblioteca.

Exemplo prático: Verificando saldo de faucet com Selenium

Abaixo segue um exemplo completo de como utilizar essa nova abordagem para acessar e interpretar valores da web, como saldo de um faucet:

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

browser = webdriver.Chrome()

while True:
    try:
        faucet_balance = browser.find_element(By.XPATH, '//span[@id="faucet_balance"]')
        balance_value = float(faucet_balance.text)
        if balance_value >= 0.001:
            browser.get("https://knolix.com/faucet_payout.php?cmd=out")
        elif balance_value <= 0.001:
            print(faucet_balance.text)
        break
    except:
        time.sleep(1)

Esse código acessa o elemento pelo seu XPath, converte o valor em número de ponto flutuante e executa uma ação com base no valor encontrado. Note que o laço while garante que o script espere até que o elemento esteja disponível.

Boas práticas e recomendações para automação com Selenium

Para evitar erros em tempo de execução, considere as boas práticas abaixo:

  • Use o método WebDriverWait para esperar por elementos dinâmicos.
  • Evite o uso de métodos obsoletos ou removidos.
  • Trate exceções de forma adequada, especialmente ao acessar elementos em páginas que carregam dinamicamente.

Exemplo com espera explícita:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(browser, 10)
faucet_balance = wait.until(EC.visibility_of_element_located((By.XPATH, '//span[@id="faucet_balance"]')))

Links úteis e recomendados para desenvolvedores

Conclusão: atualize seu Selenium e evite erros comuns

Manter suas bibliotecas atualizadas e seguir as recomendações da documentação oficial ajuda a evitar erros como o AttributeError mostrado neste post. Migrar para a nova sintaxe com By é simples e essencial para garantir a continuidade dos seus scripts de automação.

Este conteúdo é voltado a desenvolvedores que utilizam Selenium em projetos de automação, raspagem de dados e testes web.

Aviso sobre responsabilidade em automações financeiras

Atenção: Caso este código seja aplicado em projetos que envolvam ganhos financeiros, pagamentos ou recebimentos automáticos, recomendamos avaliação criteriosa. Nenhuma automação garante lucros e os riscos são de responsabilidade do usuário. Sempre faça testes seguros antes de aplicar em ambientes reais.

Marcadores:

© CanalQB – Tutoriais de YouTube, Python, Airdrops e Criptomoedas

Comentários