You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium实现WhatsApp自动化:如何确认JavaScript弹窗打开WhatsApp Web

解决WhatsApp自动化中确认打开应用的弹窗问题

你的代码里有几个关键问题导致没法正确处理这个确认弹窗,我来帮你梳理修正:

先说说现有代码的问题:

  • 访问的URL存在语法错误:driver.get('https://api.whatsapp.com/send?phone=0097155000XXXX) 末尾少了一个闭合单引号
  • 你试图通过find_element定位弹窗文本,但这个是浏览器原生的confirm弹窗,不属于页面DOM元素,所以用普通元素定位方式根本找不到它
  • 你最后调用的alert.dismiss()是点击「取消」按钮,而你需要的是确认打开应用,应该用alert.accept()
  • 新版Selenium(4.x+)已经不需要手动指定chromedriver路径了,手动指定不仅麻烦还容易出现版本不匹配问题

修正后的完整代码

先确保安装好必备依赖:

pip install selenium webdriver-manager pandas mysql-connector-python

然后是调整后的代码:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import pandas as pd
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
import os
import mysql.connector

# 自动适配Chrome版本初始化驱动,无需手动指定路径
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
# 修正URL的引号问题
driver.get('https://api.whatsapp.com/send?phone=0097155000XXXX')

try:
    # 显式等待弹窗出现,最多等10秒(比time.sleep更可靠)
    alert = WebDriverWait(driver, 10).until(EC.alert_is_present())
    # 可选:打印弹窗文本用于调试
    print(f"弹窗内容:{alert.text}")
    # 点击确认按钮,允许打开WhatsApp应用
    alert.accept()
    print("已确认打开WhatsApp")
except Exception as e:
    print(f"未检测到弹窗或出现错误:{str(e)}")

# 后续的自动化逻辑...

关键细节说明:

  • 显式等待:用WebDriverWait等待弹窗加载完成,避免页面加载慢导致的「找不到alert」报错,比硬编码time.sleep()更灵活可靠
  • alert.accept():这个方法对应弹窗的「确认/允许」按钮,而alert.dismiss()才是点击「取消」
  • 自动驱动管理:webdriver-manager会自动下载匹配当前Chrome版本的驱动,不用再手动下载和更新路径

如果你的Selenium版本低于4.x,也可以保留旧的驱动初始化方式,但还是推荐升级到最新版Selenium获得更好的兼容性。

内容的提问来源于stack exchange,提问作者sam_unrelax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 16:37:33