如何使用Selenium Python处理Telegram页面的Alert弹窗?
解决Telegram自定义弹窗无法用Selenium Alert类关闭的问题
问题原因
你遇到的NoAlertPresentException是因为当前页面的弹窗不是浏览器原生的JavaScript Alert,而是Telegram页面自定义的模态框。Selenium的Alert类仅能识别原生弹窗,因此调用alert.dismiss()会触发报错。
解决方案
改用Selenium的元素定位方法,直接找到弹窗的关闭按钮并点击:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By # 等待弹窗加载完成(最多等待10秒) close_btn = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.XPATH, "//button[contains(text(), '取消')]")) # 根据弹窗实际按钮文本调整 ) close_btn.click()
注意事项
- 如果上述XPATH定位不到按钮,打开浏览器开发者工具(F12),查看弹窗关闭按钮的HTML属性(比如
class、id)替换定位器。例如若按钮有class="tgme_page_action_btn",可改用:EC.element_to_be_clickable((By.CLASS_NAME, "tgme_page_action_btn")) - 确保等待时间足够,避免因弹窗未加载完成导致元素找不到的问题。
内容的提问来源于stack exchange,提问作者AntonioFrank
相关产品推荐
相关产品推荐

