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

Python+Selenium爬虫:新窗口Alert弹窗无法捕获问题求助

解决Selenium无法捕获新窗口Alert弹窗的问题

你的代码核心问题是没有切换到新打开的窗口,Selenium默认停留在主窗口上下文,因此无法感知新窗口中的Alert弹窗和元素,导致流程停滞。

解决方案步骤

  1. 点击按钮打开新窗口后,获取所有窗口句柄
  2. 切换到新打开的窗口
  3. 等待并处理新窗口的Alert弹窗
  4. 后续操作新窗口内的元素

修改后的完整代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoAlertPresentException

service = Service('/usr/local/bin/chromedriver')
options = Options()
options.add_experimental_option('detach', True)

driver = webdriver.Chrome(service=service, options=options)
driver.get('http://127.0.0.1:5500/index.html')

# 点击打开新窗口
open_window_button = driver.find_element(By.ID, 'openWindow')
open_window_button.click()

# 获取当前所有窗口句柄,切换到新窗口
main_window_handle = driver.current_window_handle
all_window_handles = driver.window_handles
for handle in all_window_handles:
    if handle != main_window_handle:
        driver.switch_to.window(handle)
        break

# 等待并处理新窗口的Alert弹窗
try:
    alert = WebDriverWait(driver, 10).until(EC.alert_is_present())
    alert.accept()
    print("已处理新窗口的Alert弹窗")
except NoAlertPresentException:
    print("未检测到Alert弹窗")

# 等待文件输入框可见并上传文件
file_input = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, 'fileInput')))
file_path = '/path/to/your/image.jpg'  # 替换为实际文件路径
file_input.send_keys(file_path)

# 点击上传按钮
upload_button = driver.find_element(By.ID, 'uploadButton')
upload_button.click()

# 若需返回主窗口,可执行以下代码
# driver.switch_to.window(main_window_handle)

关键说明

  • 窗口切换是核心:新窗口打开后必须切换到对应句柄,否则所有操作都在主窗口执行,自然找不到新窗口的元素和Alert
  • 用WebDriverWait替代time.sleep():等待Alert和元素时,显式等待比固定睡眠更可靠,能避免因加载延迟导致的问题
  • 异常处理:添加NoAlertPresentException捕获,防止因弹窗未出现导致程序崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 17:17:03