Selenium 处理弹窗、iframe、滚动条实战

弹窗、iframe 嵌套、页面滚动是 UI 自动化的三大经典卡点,90% 的新手卡在这里无法继续执行脚本。本文手把手实战讲解标准处理方案,解决页面特殊场景适配问题。


一、三种弹窗实战处理

1. 原生 JS 弹窗(alert/confirm/prompt)

Selenium 专属切换弹窗方法,支持确认、取消、获取弹窗文本、输入弹窗内容。原生弹窗无法通过元素定位操作,必须切换弹窗句柄。

2. 自定义弹窗(div 弹窗)

页面主流弹窗,本质是隐藏/显示 div,直接通过常规元素定位、点击关闭、确认按钮即可操作。

3. 超时弹窗、延迟弹窗

搭配显性等待,等待弹窗出现后再操作,避免弹窗未加载导致报错。


二、iframe 嵌套页面处理(高频难点)

页面嵌套 iframe 时,外部无法直接定位内部元素,必须切入 iframe 再操作,操作完成切回主页面

1. 切入 iframe 三种方式

通过索引切入、通过 name/id 切入、通过元素对象切入。

2. 切回主页面

操作完内部元素必须切回默认主页面,否则后续外部元素全部定位失败。

3. 多层 iframe 嵌套

逐层切入、逐层切回,不能跨层操作。


三、页面滚动条实战处理

页面元素在可视区域外,需要滚动展示元素后才能点击、输入,否则会报元素不可见错误。

1. 滚动到页面底部/顶部

执行 JS 脚本控制页面滚动。

2. 滚动到指定元素位置(最常用)

定位目标元素,执行滚动居中展示,适配所有超长页面、分页内容。

3. 横向滚动、局部滚动

针对表格、侧边栏局部滚动场景专属适配。


四、综合实战避坑

1. 忘记切回 iframe 导致后续全部报错;

2. 元素在可视区外未滚动导致点击失败;

3. 弹窗未等待直接操作导致随机报错;

4. 多层嵌套未逐层切换。