本文引用自霍格沃兹测试开发学社录播课《定位不到元素》
经典面试题-定位不到元素
学习目标
- 了解常见问题
- 了解每个问题对应的知识点/解决方案
- 回顾录播课内容
元素定位常见的相关问题
- Selenium/Appium定位方法有几种?分别是?
- 定位不到元素是什么原因导致的?
- selenium 中隐藏元素如何定位?
- 如何定位动态元素
- 如何通过子元素定位父元素
- 如何判断一个页面上元素是否存在?
- 有的元素就加载页面上,但是你却定位不到,怎么解决
- 一个元素明明定位到了,点击无效(也没报错),如何解决?
问题分类
类型 | 面试问题 |
---|
元素定位 | Selenium定位方法有几种?分别是? |
| 如何通过子元素定位父元素? |
元素定位不到 | 定位不到元素是什么原因导致的? |
| 如何定位动态元素 |
| selenium 中隐藏元素如何定位? |
| 有的元素就加载页面上,但是你却定位不到,怎么解决 |
元素操作 | 一个元素明明定位到了,点击无效(也没报错),如何解决? |
| 如果产品总是出现弹窗,导致用例无法执行,应该如何解决? |
| 如何获取app中的toast消息提示? |
元素是否在页面存在 | 如何判断一个页面上元素是否存在? |
元素是否在页面存在
- 问题:如何判断一个页面上元素是否存在?
- 解决方案:通过查看当前页面dom,搜索该元素是否存在。如果是脚本自动化运行过程中,应该通过打印page_source,即可了解到该元素在运行过程中是否存在
- 对应知识点:《自动化关键数据记录》
元素定位
面试问题 | 答案 | 对应录播 |
---|
Selenium定位方法有几种?分别是? | 八种定位方式,常用的为id、name、css、xpath | 《常见控件定位方法》 |
如何通过子元素定位父元素? | 编写xpath定位 | 《高级定位-xpath》 |
元素操作
- 一个元素明明定位到了,点击无效(也没报错),如何解决?
- 如果产品总是出现弹窗,导致用例无法执行,应该如何解决?
原因 | 解决方案 | 对应知识点 |
---|
异步加载js导致点击不到 | 循环点击该按钮,直到生效为止 | 《显示等待》 |
app突然出现弹框,导致元素遮挡 | 通过添加黑名单异常处理解决 | 《弹框处理》 |
如何获取app中的toast消息提示? | 直接通过xpath定位结合隐式等待获取 | 《特殊控件 toast 识别》 |
元素定位不到
原因 | 解决方案 | 对应知识点 |
---|
定位不正确 | 在console先测试定位是否正确 | 定位 |
存在动态ID | 定位方式使用css或者xpath的相对定位 | 高级定位之css、xpath |
页面还没有加载完成 | 添加死等验证,使用显示等待或隐式等待进行优化 | 隐式等待、显式等待 |
页面有iframe | 切换到iframe后定位 | 网页 frame 与多窗口处理 |
页面切换window | 切换到对应窗口后定位 | 网页 frame 与多窗口处理 |
要定位元素为隐藏元素 | 使用js操作该元素 | 执行 javascript 脚本 |