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

使用Python+Selenium WebDriver无法获取JavaScript确认框返回值

解决Selenium执行confirm弹窗返回null的问题

我之前踩过这个坑!明明confirm弹窗的逻辑是点击确定返回true、取消返回false,但用Selenium执行那段JS代码却总是拿到null,折腾了好久才找到原因和解决办法,分享给你:

可能的原因

这大概率是浏览器驱动和JavaScript执行上下文的交互bug——当confirm弹窗阻塞脚本执行,你手动点击关闭后,驱动没能正确捕获到confirm的返回值,导致最终返回null。

可行的解决办法

方法1:把confirm结果存到全局对象再读取

绕开直接返回的问题,把结果挂载到window全局变量里,之后再读取:

# 触发confirm弹窗,把结果存到window.confirmResult里
driver.execute_script("window.confirmResult = confirm('Press a button!');")
# 等待你手动点击弹窗(如果是自动化流程可以去掉sleep,换成Alert处理)
time.sleep(5)
# 读取全局变量里的结果
ss = driver.execute_script("return window.confirmResult;")
print(ss)

这样就能正确拿到true(确定)或false(取消)的结果了。

方法2:用Selenium内置的Alert类处理(自动化场景)

如果是要自动处理弹窗而不是手动点击,直接用Selenium的Alert API更靠谱,完全不需要依赖JS返回值:

# 触发confirm弹窗
driver.execute_script("confirm('Press a button!');")
# 切换到弹窗实例
alert = driver.switch_to.alert
# 点击确定,自己标记结果为True
alert.accept()
result = True
# 要是点击取消,就标记为False
# alert.dismiss()
# result = False
print(result)

这个问题在ChromeDriver的部分版本里比较常见,用上面两种方法都能完美解决~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 14:22:40