jeanzinho509 / Instabot

Um bot que abre seu navegador de Firefox e efetue o login na sua conta do Instagram
0 stars 0 forks source link

Alternativa ao time.sleep() #1

Open ebertlc opened 1 year ago

ebertlc commented 1 year ago

Para melhorar o desempenho do seu código você pode usar a função WebDriverWait do Selenium junto com o expected_conditions

username_field = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.NAME, 'username')))
username_field.send_keys("seu_usuario")

Seu código ficaria assim mais ou menos

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

  try:
      # Configurar o driver do Firefox
      driver = webdriver.Firefox(executable_path='C:/Users/Jean/Área de Trabalho/geckodriver/geckodriver.exe')

      # Navegar para a página de login do Instagram
      driver.get('https://www.instagram.com/accounts/login/')

      # Esperar para a página carregar
      # o "10" representa o tempo máximo em segundos que o bot vai aguardar até que o elemento  'username' apareça na tela
      WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.NAME, 'username')))

      # Inserir o nome de usuário
      username_field = driver.find_element(By.NAME, 'username')
      username_field.send_keys("seu_usuario")

      # Inserir a senha
      password_field = driver.find_element(By.NAME, 'password')
      password_field.send_keys("sua_senha")

      # Enviar o formulário de login
      password_field.send_keys(Keys.RETURN)

      # Esperar o processo de login completar
      WebDriverWait(driver, 10).until(EC.url_contains("https://www.instagram.com/"))

      # Navegar para o seu perfil do Instagram
      driver.get("https://www.instagram.com/seuusuario/")

  except Exception as e:
      print(e)
jeanzinho509 commented 1 year ago

Obrigado pela dica, vou por em pratica.