O código não funciona como o esperado. O fluxo certo seria: 1. entrar no primeiro grupo do WhatsApp, 2. enviar a mídia selecionada, 3. enviar a mensagem fixa, 4. Na barra de pesquisar, procurar próximo grupo e continuar o processo, até que o conteúdo tenha sido enviado para todos os grupos da lista. Ao rodar o código, o bot entra no WhatsApp, procura o primeiro grupo, envia a imagem e não envia a mensagem, depois ele busca outro grupo na barra de pesquisar sem nem limpar a busca anterior. O código é esse: from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import time import os # Iniciar o ChromeDriver com o WebDriver Manager service = Service(ChromeDriverManager().install()) driver = webdriver.Chrome(service=service) driver.get('https://web.whatsapp.com/') # Abre o Whatsapp Web time.sleep(15) # Sleep de 15 segundos, tempo para escanear o QRCode # Contatos a serem enviados contatos = ['aa','bb','cc'] # Mensagem a ser enviada mensagem = "Hello, world!" # Mídia a ser enviada midia = os.path.abspath("planet.jpeg") # Função que pesquisa o contato/grupo def buscar_contato(contato): try: # Espera o campo de pesquisa estar disponível campo_pesquisa = WebDriverWait(driver, 20).until( EC.presence_of_element_located((By.XPATH, '//div[@contenteditable="true" and @role="textbox"]')) ) campo_pesquisa.click() campo_pesquisa.clear() campo_pesquisa.send_keys(contato) campo_pesquisa.send_keys(Keys.ENTER) # Verifica se o grupo foi realmente aberto antes de continuar WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.XPATH, f'//span[@title="{contato}"]')) ) time.sleep(3) # Espera extra para garantir que o grupo foi carregado except Exception as e: print(f"Erro ao buscar o contato: {e}") # Função que envia mídia como mensagem def enviar_midia(midia): try: # Espera o botão de anexar estar disponível e clica nele WebDriverWait(driver, 20).until( EC.element_to_be_clickable((By.CSS_SELECTOR, "div[title='Anexar']")) ).click() # Espera o botão "Fotos e vídeos" estar disponível e clica nele WebDriverWait(driver, 20).until( EC.presence_of_element_located((By.CSS_SELECTOR, "input[accept='image/*,video/mp4,video/3gpp,video/quicktime']")) ).send_keys(midia) # Verifica se o botão de enviar apareceu e aguarda o término do upload send_button = WebDriverWait(driver, 60).until( EC.element_to_be_clickable((By.CSS_SELECTOR, "div[aria-label='Enviar']")) ) # Aguardar até que o botão de envio esteja disponível e clica nele send_button.click() # Verifica se a mídia foi enviada (espera o botão de enviar desaparecer ou mudar) WebDriverWait(driver, 60).until_not( EC.element_to_be_clickable((By.CSS_SELECTOR, "div[aria-label='Enviar']")) ) except Exception as e: print(f"Erro ao enviar a mídia: {e}") # Função que envia a mensagem def enviar_mensagem(mensagem): try: # Espera o campo de mensagem estar disponível campo_mensagem = WebDriverWait(driver, 20).until( EC.presence_of_element_located((By.CSS_SELECTOR, "div[contenteditable='true'][data-tab='10']")) ) campo_mensagem.click() campo_mensagem.send_keys(mensagem) campo_mensagem.send_keys(Keys.ENTER) except Exception as e: print(f"Erro ao enviar a mensagem: {e}") # Percorre todos os contatos/grupos e envia as mensagens for contato in contatos: buscar_contato(contato) # Busca o contato atual enviar_midia(midia) # Envia a mídia enviar_mensagem(mensagem) # Envia a mensagem time.sleep(3) # Pausa antes de passar para o próximo contato Continue reading...