UI自动化——元素定位经典面试题

一、常见面试题

  • selenium/appium定位方法有哪几种?
  • 定位不到元素是什么原因导致?
  • selenium中隐藏元素如何定位?
  • 如何定位动态元素?
  • 如何通过子元素定位父元素?
  • 如何判断一个页面上元素是否存在
  • 有的元素已经加载到页面上,但是却定位失败,如何解决?
  • 一个元素明明定位到了,点击无效(也不报异常),如何解决?

1.1、技术点分析

类型 面试问题
元素定位 selenium定位方式有哪几种?
元素定位不到 定位不到元素是什么原因导致?
如何定位动态元素
有的元素已经加载了,但是却定位不到,怎么解决?
元素操作 一个元素明明定位到了,但是点击无效(也不报错),如何解决
selenium中隐藏的元素如何定位?
如果产品中总数出现弹窗,导致用例执行失败,应该如何解决?
如何获取toast中的消息提示?
元素是否存在 如何判断一个元素是否存在?

解题思路

2.1、元素是否存在?

解决方案:通过产看当前页面dom,搜索元素是否存在。如果在执行过程中,可以打印page_source,来判断元素是否存在

2.2、元素定位方式有哪些?

  • selenium定位方式有哪几种?

八种定位方式:id、name、link_text、partial_link_text、tag_name、css_selector、xpath、class_name;

  • 如何通过子元素定位父元素?

编写XPATH表达式

2.3、一个元素明明已经定位到了,点击却无效(也不报错),如何解决?

原因:异步加载导致
解决方法:循环点击按钮,直到点击生效为止

突然的弹窗,导致元素被遮挡
通过黑名单机制,异常处理。

2.4、selenium中隐藏的元素如何定位操作?

隐藏的元素可以直接定位,但是无法直接点击或交互
解决方法:使用js执行交互操作

2.5、如何获取toast中的消息提示?

toast闪过太快,不好定位
解决方法:可使用xpath定位

2.5、元素定位不到

原因 解决方案
定位不正确 先调试正确后在使用
页面还未加载完成 添加等待验证,使用显示或隐式等待验证
存在动态ID 使用CSS_SELECTOR或XPATH的相对定位
页面有frame 切换到frame后定位
页面切换到新窗口 切换到对应的窗口进行定位