树莓派4运行Pywhatkit无法自动发送WhatsApp消息求助
解决方案:树莓派上Pywhatkit无法发送WhatsApp消息
1. 配置系统自动化权限
树莓派OS默认限制自动化工具对输入设备的访问,这是导致PyAutoGUI/Pywhatkit无法模拟发送操作的核心原因之一:
- 打开系统设置,进入Accessibility(无障碍),找到Pointing & Clicking选项,确保Mouse Keys和Click Assist已启用;
- 终端执行
xhost +命令,临时允许所有用户进程访问X服务器(若重启后失效,可将该命令加入~/.bashrc实现开机自动执行); - 若使用VNC远程连接树莓派,需在VNC设置中开启Send raw mouse events,避免输入模拟失效。
2. 调整Pywhatkit参数,优化执行逻辑
修改测试代码,延长等待时间并禁用自动关标签,手动模拟发送操作:
import pywhatkit import pyautogui import time # 延长等待时间到60秒(适配树莓派浏览器加载速度),禁用自动关标签 pywhatkit.sendwhatmsg('phone_number', 'message', 15, 20, 60, tab_close=False) # 额外等待5秒确保消息输入完成 time.sleep(5) # 模拟回车发送消息(若回车无效,可先用pyautogui.position()获取发送按钮坐标,替换为pyautogui.click(x=xxx, y=xxx)) pyautogui.press('enter') # 发送完成后手动关闭标签 pyautogui.hotkey('ctrl', 'w')
3. 改用Selenium直接控制浏览器(更稳定)
Pywhatkit的封装逻辑在树莓派上兼容性较差,直接使用Selenium可实现更可控的自动化:
- 安装依赖:
sudo apt install chromium-chromedriver pip install selenium
- 编写Selenium脚本:
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys import time # 配置Chromium浏览器选项 options = webdriver.ChromeOptions() options.add_argument('--no-sandbox') options.add_argument('--disable-dev-shm-usage') driver = webdriver.Chrome(options=options) driver.get('https://web.whatsapp.com') # 等待扫码登录(首次运行需手动扫码,后续会保留会话) time.sleep(30) # 搜索目标联系人/号码 search_box = driver.find_element(By.XPATH, '//div[@contenteditable="true"][@data-tab="3"]') search_box.send_keys('phone_number') time.sleep(2) search_box.send_keys(Keys.ENTER) # 输入并发送消息 message_box = driver.find_element(By.XPATH, '//div[@contenteditable="true"][@data-tab="1"]') message_box.send_keys('message') message_box.send_keys(Keys.ENTER) time.sleep(5) driver.quit()
4. 检查浏览器会话状态
确保树莓派上的Chromium浏览器已登录WhatsApp Web(首次运行需扫码,后续会自动保留登录状态),Pywhatkit和Selenium都会依赖已登录的会话完成操作。
内容的提问来源于stack exchange,提问作者ItK
相关产品推荐
相关产品推荐

