UI层自动化测试脚本中,脚本不稳定性一直是困扰测试人员很大的一个点,其中,没有找到期望的页面元素或者点击操作失败又是导致UI层自动化脚本失败的主要原因。故此次课程将学习如果选择cypress作为测试框架,有哪些策略可以提高定位和操作页面元素脚本的稳定性。总的来讲有三种层次的retry机制来提升脚本稳定性,即定位页面元素retry、步骤级别retry,案例级别retry。接下来就先了解定位页面元素的retry机制。
定位页面元素retry
我们先分析下哪些因素可能导致查找或者操作页面元素失败。
-
未找到页面元素的原因
- 定位页面元素的selector被修改,导致定位页面元素失败
- 等待处理不合理,页面元素还未加载出来时进行定位导致定位失败
-
操作页面元素失败
- 页面元素是disable属性,不允许点击
- 页面元素被其他元素遮挡,不允许点击
- 页面元素不在viewport中,不允许点击
- 页面元素是隐藏的,不允许点击
- 页面元素是readOnly属性,不允许输入内容
如果我们使用webdriver编写UI层自动化测试,为了提升脚本的稳定性就需要在测试脚本中添加很多显式和隐式等待,保证元素被加载出来后再进行定位或者点击等操作。除此之外,还会检查页面元素属性值,拖动元素到viewport中等提升操作页面元素的成功率。如果这两项补偿措施没有做或者做的不够完善,UI层自动化测试就可能概率性失败。那么使用cypress时是否还需要在脚本中继续这样做呢?答案是基本不需要,因为cypress框架在定位页面元素时内置了自动retry机制,即在超时时间内会不断尝试定位元素直到到达超时时间。在操作页面元素时,cypress内置了很多操作保证页面元素操作不会失败,下面是cypress操作页面元素前执行的a