UI的定位

148 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第22天,点击查看活动详情

在UI自动化中,一般先要找到需要操作的元素对象,然后进行操作。

定位元素成功与否,决定了你的用例的成败。所以定位元素很重要。

很多同学在用Selenium,Appium等做自动化的时候,有的时候却总能碰到这个熟悉的错误: NoSuchElementException)

排查了很久,也找不到原因。一下子就懵了,刚才还好好的,这是怎么了?

UI自动化,先天不足的就是不够稳定。很多因素导致定位不到元素。

可能网速导致还还没加载完全,你却已经操作了。

可能页面渲染慢,资源还没加载完全,特别是弱网情况下明显。

可能有广告等弹出框。

可能你等待时间不够,目标还没出现,你却先下手了。

种种因素,让你获取不到元素,从而报错。

下面我们来分析一下,找不到元素的原因有哪些,并找到到解决方案。

1.Frame/lframe原因定位不到元素:

这个是最常见的原因,首先要理解下frame的实质,frame中实际上是嵌入了另一个页面,而webdriver每次只能 在一个页面识别,因此需要先定位到相应的frame,对那个页面里的元素进行定位。

2.Xpath描述错误原因:

由于Xpath层级太复杂,容易犯错。但是该定位方式能够有效定位绝大部分的元素,建议掌握。 我们定位元素的原则是:越简单越好。如果有id,name,class,css,link等,这是最简单不过了的。如果实在不好 定位,我们可以用xpath,xpath建议不要用绝对路径,也不宜过长长,一般用模糊匹配就可以了。

3.页面还没有加载出来,就对页面上的元素进行的操作:

这种情况一般说来,可以设置等待,等待页面显示之后再操作,这与人手工操作的原理一样 设置一下显示等待时间。

4.不可见元素定位

有些元素,是需要hover在另外一个元素上,才显示。是invisijable,disable的,如下拉列表等。所以我们先要将 鼠标移到其父节点上,显示以后才对其定位。

5.广告页面

见到广告页,不要怕,有些是弹框的,有些是浮动的页面。基本都是能定位得到的。

在实践中,可能会遇到各种问题,只有通过不断积累,才能应付自如