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

Sugestões de pesquisas

Como usar Selenium para aguardar elementos na página

#Selenium; #AutomaçãoWeb; #Python

Como usar Selenium para aguardar elementos com Python

Ao utilizar o Selenium em scripts de automação web com Python, é comum se deparar com o erro "no such element: Unable to locate element". Esse erro indica que o Selenium não conseguiu encontrar o elemento desejado na página, geralmente porque ele ainda não foi carregado completamente.

Por que esse erro acontece?

Esse problema pode ocorrer por diversos motivos, como:

  • O elemento ainda não foi carregado pelo JavaScript;
  • A página ainda está em processo de renderização;
  • O seletor usado está incorreto ou desatualizado;
  • A navegação para a página ainda não foi concluída.

Como evitar o erro com WebDriverWait

O Selenium oferece uma solução eficaz para esse problema: o uso da classe WebDriverWait, em conjunto com as Expected Conditions (condições esperadas). Dessa forma, o código "espera" até que o elemento esteja disponível na página antes de prosseguir.

Exemplo com By.ID

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

wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.ID, "element_id")))

Esse código irá aguardar até 10 segundos para que um elemento com o ID "element_id" apareça na página. Caso ele não seja encontrado nesse intervalo, será lançada uma exceção TimeoutException.

Exemplo com By.XPATH

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

wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.XPATH, "//element[@attribute='value']")))

Verifique se o seletor está correto

Certifique-se de que você está utilizando o seletor correto para localizar o elemento. Você pode usar as ferramentas do navegador (como o DevTools do Chrome) para inspecionar o elemento manualmente.

Esperar o carregamento completo da página

Se o erro ocorre porque a navegação para uma nova URL ainda não foi concluída, você pode usar o seguinte código para aguardar a URL desejada:

wait = WebDriverWait(driver, 10)
wait.until(EC.url_to_be("https://www.youtube.com/@canalqb"))

Dica extra: aguarde o elemento ser clicável

Se você não apenas precisa que o elemento esteja presente, mas também clicável (por exemplo, um botão), use:

element = wait.until(EC.element_to_be_clickable((By.ID, "botao_exemplo")))

Resumo

Evitar o erro "no such element" requer boas práticas como:

  • Utilizar WebDriverWait e condições esperadas;
  • Verificar corretamente os seletores usados;
  • Aguardar a URL ou o DOM ser carregado por completo;
  • Usar tempo suficiente para aguardar elementos dinâmicos.

Seguindo essas dicas, você torna seus scripts Selenium muito mais robustos, seguros e profissionais.

Referência oficial

Para mais detalhes técnicos, consulte a documentação oficial do Selenium sobre Waits.

Postar um comentário

Comente só assim vamos crescer juntos!
CanalQb mais próximo Quer falar com o CanalQb?
Em que posso te ajudar?
Fale comigo