【问题标题】:Error in Whatsapp Automation using Selenium and Python使用 Selenium 和 Python 的 Whatsapp 自动化错误
【发布时间】:2021-04-05 00:49:52
【问题描述】:

我尝试使用 selenium 在 whatsapp 中向我的朋友发送消息。我下载了适用于 windows 的最新版本的 chromedriver,当我运行代码时,whatsapp web 已打开但消息未发送。这是我的代码和我遇到的错误:-

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

# Replace below path with the absolute path
# to chromedriver in your computer
*driver = webdriver.Chrome(executable_path=r'D:\Whatsapp Automation\chromedriver.exe')

driver.get("https://web.whatsapp.com/")
wait = WebDriverWait(driver, 600)

# Replace 'Friend's Name' with the name of your friend
# or the name of a group
target = "Friend's name"

# Replace the below string with your own message
string = "Hii"

x_arg = '//span[contains(@title,' + target + ')]'
group_title = wait.until(EC.presence_of_element_located((
    By.XPATH, x_arg)))
group_title.click()
inp_xpath = '//div[@class="input"][@dir="auto"][@data-tab="1"]'
input_box = wait.until(EC.presence_of_element_located((
    By.XPATH, inp_xpath)))
for i in range(100):
    input_box.send_keys(string + Keys.ENTER)
    time.sleep(1)

这是我得到的调试文件

[1228/125305.696:ERROR:process_reader_win.cc(123)] NtOpenThread: {Access Denied} A process has requested access to an object, but has not been granted those access rights. (0xc0000022)
[1228/125305.696:ERROR:exception_snapshot_win.cc(99)] thread ID 8952 not found in process
[1228/125305.742:ERROR:process_reader_win.cc(151)] SuspendThread: Access is denied. (0x5)
[1228/125305.758:ERROR:process_reader_win.cc(151)] SuspendThread: Access is denied. (0x5)
[1228/125305.758:ERROR:process_reader_win.cc(151)] SuspendThread: Access is denied. (0x5)
[1228/125305.758:ERROR:process_reader_win.cc(151)] SuspendThread: Access is denied. (0x5)
[1228/125305.758:ERROR:process_reader_win.cc(151)] SuspendThread: Access is denied. (0x5)
[1228/125305.758:ERROR:process_reader_win.cc(151)] SuspendThread: Access is denied. (0x5)
[1228/125305.758:ERROR:process_reader_win.cc(123)] NtOpenThread: {Access Denied} A process has requested access to an object, but has not been granted those access rights. (0xc0000022)
[1228/125305.758:ERROR:exception_snapshot_win.cc(99)] thread ID 10128 not found in process

我从https://chromedriver.storage.googleapis.com/index.html?path=87.0.4280.88/下载了chromedriver

【问题讨论】:

    标签: python selenium selenium-webdriver selenium-chromedriver whatsapp


    【解决方案1】:

    我已经使用硒做到了这一点。 我制作了一个whatsapp bot,当它收到任何人的任何新消息时,它会自动发送消息。

    检查以下代码并尝试使用它来完成向某人发送消息的工作。

    
    from selenium import webdriver
    import time
    
    try:
        driver = webdriver.Chrome(executable_path=r'D:\Whatsapp Automation\chromedriver.exe')
    except:
        driver = webdriver.Chrome(ChromeDriverManager().install())       # This will install the updated chromedriver automatically.
    
    driver.get("https://web.whatsapp.com")
    time.sleep(25) # For scan the qr code from the mobile phone to connect.
    # Plese make sure that you have done the qr code scan successful.
    confirm = int(input("Press 1 to proceed if sucessfully login or press 0 for retry : "))
    
    if confirm == 1:
       print("Continuing...")
    elif confirm == 0:
       driver.close()
       exit()
    else:
       print("Sorry Please Try again")
       driver.close()
       exit()
    
    '''
    while True:
        # Here you can handle the received message and can send message to any selected person. Or you can follow my way to reply each person on their new message.
        send_message(driver)
    '''
    
    def send_message(chrome_browser):
        print("Starting Sending_msg")
        user_name_list = ['My Bot +1']  # Add the all users name in the list to whom you want to sent message.
    
        for user_name in user_name_list:
            try:
                # Select for the title having user name
                user = chrome_browser.find_element_by_xpath('//span[@title="{}"]'.format(user_name))
                user.click()
                time.sleep(1)
            except NoSuchElementException as se:
                print("Error : {}\nCause of Error : {}\n Line number : {}".format(sys.exc_info()[0], sys.exc_info()[1], sys.exc_info()[2].tb_lineno))
                print(se)
                new_chat(user_name, chrome_browser)
    
            # Typing message into message box
            time.sleep(1)
            
            message_input_box = chrome_browser.find_element_by_xpath('//div[@class="p3_M1 _1YbbN"]')
            message_box.send_keys('Hey, I am your whatsapp bot :)')
          
            time.sleep(1)
    
            # Click on send button
            try:
                message_box = chrome_browser.find_element_by_xpath('//button[@class="_4sWnG"]')
                message_box.click()
            except:
                print("Error : {}\nCause of Error : {}\n Line number : {}".format(sys.exc_info()[0], sys.exc_info()[1], sys.exc_info()[2].tb_lineno))
                time.sleep(1)
                message_box = chrome_browser.find_element_by_xpath('//button[@class="_4sWnG"]')
                message_box.click()
    
            time.sleep(2)
    
    
    send_message(driver)
    
    

    节点:我不确定 whatsapp-web 是否再次更改了其 Web 元素类名称。如果遇到与找不到此类元素相关的任何错误,请检查 whatsapp Web 元素类名称并对其进行检查并在代码中进行更新。

    • 如果要复制,请确保代码块中的缩进相同。

    • 可以在以下链接中阅读我的另一个答案,以获取有关使用 python 的 WhatsApp web 的更多信息。

    • Line breaks in WhatsApp messages sent with Python

    • 我正在使用 python 开发 WhatsApp 机器人。

    • 您可以通过以下方式联系:anurag.cs​​e016@gmail.com

    • 如果这个答案对你有帮助,请在我的https://github.com/4NUR46 上打个星。

    【讨论】:

      猜你喜欢
      • 2021-10-31
      • 2022-06-11
      • 1970-01-01
      • 2021-11-07
      • 1970-01-01
      • 1970-01-01
      • 2019-03-08
      • 1970-01-01
      • 2020-06-21
      相关资源
      最近更新 更多