Selenium 核心机制

共 19 题
#

1. Selenium 八种定位方式的优先级与稳定性权衡?为什么优先推荐 CSS/测试 ID 而慎用绝对 XPath?

A 绝对 XPath 最稳定,应优先使用
B 优先测试 ID/id 与语义 CSS,绝对 XPath 依赖 DOM 层级顺序、易失效,应慎用 ✓ 正确答案
C 八种方式稳定性相同
D id 最不稳定
#

2. 显式等待、隐式等待与强制等待的区别是什么?混用显式与隐式等待会导致什么问题?

A 强制等待最稳定
B 显式与隐式可以放心混用
C 强制等时间、隐式等任意查找、显式等特定条件;混用隐式与显式会叠加超时并掩盖错误 ✓ 正确答案
D 隐式等待不作用于查找
#

3. StaleElementReferenceException 的产生机理与系统化规避策略?

A 抛异常是正常的无需处理
B 元素引用永远不会失效
C 它是 DOM 更新后旧引用失效,应操作前重新解析、等待稳定并封装重试的 re-find 模式 ✓ 正确答案
D 保存元素引用最稳
#

4. iframe、多窗口与原生弹窗(alert/confirm)的切换处理方法?

A iframe 内元素可直接操作
B 弹窗会自动消失
C iframe 需切换 frame 上下文、多窗口需切换句柄、弹窗需预注册监听/提前处理,用完恢复上下文 ✓ 正确答案
D 多窗口无需切换
#

5. Selenium 4 的 W3C WebDriver 协议、相对定位器与 BiDi 能力相比 Selenium 3 带来了哪些变化?

A Selenium 4 仍用 JSON Wire Protocol
B 相对定位器是 Selenium 3 的
C BiDi 与 Selenium 无关
D Selenium 4 基于 W3C WebDriver 协议、新增相对定位器并引入 BiDi 双向通信能力 ✓ 正确答案
#

6. 文件上传/下载场景在无头(headless)浏览器中如何自动化?

A 下载完成无需等待
B 无头下只能依赖系统对话框
C 无头下无法下载
D 上传用 input 送路径,下载用事件捕获并配置下载目录,以 API/事件方式替代对话框 ✓ 正确答案
#

7. Selenium WebDriver 的架构,Client 与 Browser Driver 的通信(WebDriver Wire Protocol/W3C),与浏览器自动化协议的关系?

A Client 直接驱动浏览器
B 驱动与浏览器无关
C Client 通过 HTTP 与 Driver 用 W3C WebDriver 协议通信,Driver 再翻译为浏览器专有协议(CDP/Marionette 等) ✓ 正确答案
D 所有浏览器用同一驱动
#

8. Selenium 的元素定位策略,id/name/class/xpath/css 的优先级与性能差异,动态元素如何稳定定位?

A xpath 性能最好
B 优先 id/测试 ID 与语义 CSS,动态元素用相对定位与属性匹配而非绝对路径/索引 ✓ 正确答案
C id 最容易重复
D 动态元素只能用索引
#

9. 无头浏览器(Headless)与有头浏览器在 Selenium 测试中的差异,截图、下载、媒体播放与资源开销如何取舍?

A 无头浏览器更接近真实渲染
B 无头无法截图
C 无头省资源适合 CI,有头真实适合调试;无头下需配置截图时机、下载目录与媒体/GPU ✓ 正确答案
D 有头更适合大批量并行
#

10. Selenium 在 CI 容器中的执行,xvfb/无头模式、浏览器驱动版本匹配(WebDriverManager)与资源限制?

A 容器内无需处理显示
B 驱动版本随意即可
C 无需限制并发
D 用无头/xvfb 解决显示、WebDriverManager 匹配驱动版本、限制资源并匹配并发数 ✓ 正确答案
#

11. Selenium 显式等待的常用条件(ExpectedConditions)清单与自定义等待条件,如何避免轮询过频与超时误判?

A 超时越短越好
B 固定轮询即可
C 用语义化 ExpectedConditions 与自定义条件,合理设置轮询频率与超时避免过频与误判 ✓ 正确答案
D 轮询越频繁越准
#

12. Shadow DOM 与自定义元素内部结构的定位,open/closed shadow root 的区别,如何用 piercing 或 JS 句柄定位深层元素?

A open 与 closed shadow 都可直接穿透
B closed shadow 的 shadowRoot 可直接访问
C open shadow 可外部穿透,closed 拒绝;用自动 pierce/JS 句柄并封装在 Page 层 ✓ 正确答案
D Shadow DOM 无法定位
#

13. 用 CDP(Chrome DevTools Protocol)增强 Selenium,网络请求拦截、性能指标(LCP/CLS)采集与模拟弱网如何实现?

A Selenium 无法访问 CDP
B 通过 DevTools 接口可拦截网络、采集 LCP/CLS 并用 emulateNetworkConditions 模拟弱网 ✓ 正确答案
C 性能指标只能用外部工具
D CDP 只能用于 Playwright
#

14. 元素"可见但不可交互"的判定,覆盖遮挡、disabled、视口外元素为何点击会失败,如何统一封装"等待可点击"?

A 点击失败无需处理
B 可见元素一定能点击
C 覆盖遮挡、disabled、视口外都会导致点击失败,应统一封装"等待可点击"再点击 ✓ 正确答案
D 视口外元素可直接点击
#

15. execute_script 执行 JS 的典型使用场景(滚动、修改属性、点击被遮挡元素)与滥用风险?

A 用于滚动、修改属性、穿透等原生难实现的场景,但要避免用 JS 伪造交互造成假绿 ✓ 正确答案
B 用 JS 点击可完全替代真实交互
C JS 修改页面总是安全
D 应尽量用 JS 操作所有元素
#

16. Selenium Grid 的原理,Hub/Node 架构如何实现跨浏览器、跨机器的分布式执行?

A Node 负责调度,Hub 负责执行
B Grid 只能单机
C Hub 调度任务、Node 承载浏览器执行,按能力匹配实现跨浏览器/跨机器分布式并行 ✓ 正确答案
D Grid 无法跨浏览器
#

17. Selenium ActionChains 的稳定性问题,拖拽、悬浮、组合键在 HTML5 与老页面上的差异与替代方案?

A dragAndDrop 在 HTML5 上总是可靠
B HTML5 与老页面拖拽机制不同、组合键有平台差异,需用原生交互/JS 替代并封装 ✓ 正确答案
C 悬浮不会受动画影响
D 组合键无平台差异
#

18. Selenium 测试的失败诊断,截图、页面源码、控制台日志与视频录制的自动归档方案?

A 只需截图即可
B 失败时自动归档截图、页面源码、控制台/网络日志与视频,并关联元数据到报告 ✓ 正确答案
C 证据无需归档
D 控制台日志无法获取
#

19. 页面状态等待的可靠性设计,SPA 路由切换后如何等待新页面就绪(URL/元素/网络空闲的组合条件),避免固定 sleep?

A 固定 sleep 最可靠
B 用 URL + 关键元素 + 网络空闲的组合条件等待新页面就绪,避免固定 sleep ✓ 正确答案
C SPA 不刷新所以无需等待
D 单一条件即可覆盖所有情况