前言
由于是首次接触自动化测试,在学习和使用的过程中,难免会遇到各种各样的问题,所以这篇文章是总结踩到的各种坑,保证后面再次遇到时可以快速解决~
一、索引越界error
上图就是索引越界报的错,从error log中可以看到,报错的这行脚本。。emmm,非常长!!!都是小程序没有ID的错!!!
这行脚本是通过录制得到的,可是在运行时却报错,经过查询,应该是webkit引擎的bug,此处不再深究。
言归正传,这行脚本既然报了indexError,证明某个索引超出了越界,那么就来找出哪里错误。众所周知,在编程中开始不是1,而是0,那么就能排除该行中索引为0的元素
排除了0之后,还有三个索引,分别是1、6、1,那么一个一个来试,从第一个
("android.webkit.WebView")[1]
开始,将1改为0后运行,成功了!那么证明是该元素越界了。
在后面的脚本录制中,也会遇到同样的问题,同样是
("android.webkit.WebView")[1]
越界,所以后续着重关注该元素即可
二、定位的元素文字有误
在订单详情页中,定位“立即支付”,录制的脚本如下:
从脚本代码来看,这明显是无法运行的,该怎么办呢?
此处可以用正则表达式来解决,从图上可看出,“立即支付”前后都有回车符,所以可以改为
poco(text="^\s*立即支付\s*$").click()
(正则表达式教程可以看这篇文章),尝试运行一下此处要说明一下,text是精准定位,即元素的文字是什么就是什么,哪怕差一个字符,都会报错
所以这里要把text改为textMatches,即poco(textMatches="^\s*立即支付\s*$").click()
,再次运行
三、同一页面有2个以上相同元素或控件的处理
在同一个页面中,有2个以上相同的元素或控件,可以用"索引"来解决该问题。
在该页面中,“+”和“-”各自有两个元素,那么怎么定位第一个或者第二个呢?此处可以用索引来解决。
定位第一个的话,可以编写为
poco(text="-")[0].click()
,poco(text="-")[0].click()
,即不设置索引,或者索引设置为[0]的话,都是定位第一个“-”。想定位第二个的话,可以把索引设置为[1],即
poco(text="-")[1].click()