10 iframe、多窗口、弹窗这些场景怎么处理?
2026/9/8...大约 2 分钟
10|iframe、多窗口、弹窗这些场景怎么处理?
开场按三类场景逐个讲透——这题考的是实战经历的真实密度。
回答思路
第一步:iframe 讲透
它是独立的文档,Selenium 的查找默认只在当前文档里:
- 进 iframe 要
switch_to.frame,出来要switch_to.default_content - 嵌套的 iframe 要逐层切
- 支付页面、富文本编辑器、第三方登录控件是重灾区——能报出业务场景,说明真处理过
第二步:多窗口讲句柄管理
点击链接打开新窗口后,用 window_handles 拿到所有句柄,遍历切到新句柄操作,操作完切回原句柄或关掉新窗口——注意句柄集合的顺序不保证,别按下标硬取。
第三步:弹窗分两类讲
| 类型 | 处理 |
|---|---|
| 原生 alert / confirm / prompt | switch_to.alert 接管,accept 或 dismiss |
| 自定义 div 弹窗 | 就是普通元素,直接定位操作 |
分清这两类是常识分水岭——很多人把 div 弹窗也去 switch_to.alert 然后报错。
收尾:讲封装
这些切换操作全部封装成 PO 层的通用方法,业务用例不感知切换细节。切换完的「上下文还原」尤其要封装进去——用例切完 frame 不还原,会污染后面的用例。
考察重点
| 维度 | 说明 |
|---|---|
| 企业动机 | 真实业务页面全是这些复杂结构(支付、富文本、第三方组件躲不开)——背教程的人到这题就现形 |
| 过线标准 | iframe 切换进出 + 原生弹窗和 div 弹窗的分类 |
| 区分度 | 讲嵌套 iframe 逐层切、讲句柄顺序不保证、讲上下文还原封装的,全是踩坑换来的细节 |
| 加分项 | 把这些处理沉淀成框架层通用方法的设计 |
| 减分项 | 不知道 div 弹窗不用 switch_to.alert,暴露实操量不足 |
来源
整理自知识星球帖《面试情报 03|自动化测试 20 题》,返回题库。