Whatsapp Automated Bot no puede buscar en la lista de contactos de WhatsApp

Estoy tratando de implementar un bot de WhatsApp, que usa el chromedriver y abre whatsapp web, y envía mensajes a los contactos. Estos son los pasos del progtwig:

  • Lee los contactos de un archivo excel
  • Establezca la hora, cuando desea enviar el mensaje junto con el mensaje que desea enviar
  • Busca ese nombre y envía un mensaje.

Aquí están los problemas que no puedo resolver:

  1. Si el nombre no aparece en los chats recientes, no puede buscarlo en la lista de contactos de WhatsApp y enviar
  2. También quiero saber cómo puedo enviar imágenes y videos.

Dado que el código es bastante largo, aquí está el enlace: https://github.com/harshitsidhwa/WhatsApp-bot-selenium

Python enviando mensajes a los contactos:

 def send_message(target): global message,wait, browser try: x_arg = '//span[contains(@title,' + target + ')]' group_title = wait.until(EC.presence_of_element_located((By.XPATH, x_arg))) group_title.click() input_box = browser.find_element_by_xpath('//*[@id="main"]/footer/div[1]/div[2]/div/div[2]') input_box.send_keys(message + Keys.ENTER) time.sleep(1) except NoSuchElementException: return 

Aquí la variable destino es el nombre del contacto al que desea enviar un mensaje. El mensaje de variable contiene el mensaje de texto que desea enviar a ese contacto. Variable del navegador es variable del controlador web.

Ya he trabajado en la automatización de WhatsApp, en caso de recibir ayuda, consulte el enlace: https://github.com/shauryauppal/PyWhatsapp

Has planteado dos problemas:

  1. No puede acceder a los nombres de contactos por lista de contactos o lista de contactos archivada. La única manera es contactos de chat recientes. Para otros contactos, debe visitar todos los contactos, seleccionar a la persona objective y luego enviar mensajes. (Se implementará pronto).

  2. PyAutoIt puede implementar el envío de imágenes, archivos y videos. Consulte mi repo, ya lo he implementado.

Paso 1: Enlace de instalación AutoIt.exe

Paso 2:

pip instalar PyAutoIt

Consulte mi código o este enlace para orientación.

Ejemplo básico de código Java para buscar contactos, enviar mensajes y / o archivos. Puede implementar espera explícita si es necesario.

 driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); List targets = new ArrayList<>(); for (String target:targets) { driver.findElement(By.xpath("//button[.//span[@data-icon='search']]/..//input")).clear(); driver.findElement(By.xpath("//button[.//span[@data-icon='search']]/..//input")).sendKeys(target); try { driver.findElement(By.cssSelector("span[title='"+target+"']")).click(); } catch (WebDriverException e) { System.out.println("Not found"); continue; } driver.findElement(By.cssSelector("div[contenteditable='true']")).sendKeys("MassageToSend"); driver.findElement(By.cssSelector("span[data-icon='send']")).click(); //To send attachments //click to add driver.findElement(By.cssSelector("span[data-icon='clip']")).click(); //add file to send by file path driver.findElement(By.cssSelector("input[type='file']")).sendKeys("FilePath"); //click to send driver.findElement(By.cssSelector("span[data-icon='send-light']")).click(); } 

En python (puede contener errores de syntax):

 if msgToSend[count][0]==curHour and msgToSend[count][1]==curMin and msgToSend[count][2]==curSec: # utility variables to tract count of success and fails success = 0 sNo = 1 failList = [] # Iterate over selected contacts for target in targets: print(sNo, ". Target is: " + target) sNo+=1 inputSearchBox = driver.find_element_by_id('//button[.//span[@data-icon="search"]]/..//input') inputSearchBox.clear() inputSearchBox.send_keys(target[1:len(target) - 1]) try: wait5.until(EC.presence_of_element_located((By.CSSSELECTOR, 'span[title="'+ target +'"]'))) except: print("Cannot find Target: " + target) failList.append(target) continue driver.find_element_by_css_selector('div[contenteditable="true"]').sendKeys("Hello, " + target + "."+ Keys.SHIFT + Keys.ENTER + msgToSend[count][3] + Keys.SPACE) driver.find_element_by_css_selector('span[data-icon="send"]').click() # To send attachments # click to add driver.find_element_by_css_selector('span[data-icon="clip"]').click() # add file to send by file path driver.find_element_by_css_selector('input[type="file"]').sendKeys("FilePath") # click to send driver.find_element_by_css_selector('span[data-icon="send-light"]').click()