首页 > 技术文章 > UI自动化,手机验证码处理方式。

testling 2021-01-27 15:27 原文

接到一个任务,就是做app的UI自动化,而首先我们需要进行对app的功能测试用例进行梳理,得到一个需进行自动化测试的用例集

 

1.登录场景的用例

 

(1)通过手机号进行获取验证码登录

(2)qq登录

(3)微信登录

 

后面的2和3 都毕竟简单,在qq和微信都在线时,点击图标进行登录即可。主要是1,因为没有办法拿到验证码。

 

方式(1)一开始,是将sim插入测试手机,通过验证码的复制粘贴方式来进行send_keys,但是发现app存在个bug,就是不能进行复制粘贴,顿时心里凉凉,

 

方式(2)后面通过打开短信app,拿到验证码,通过get_text的方式获取验证码(或者通过正则表达式来取验证码),是可以拿到验证码的。此时又发现一个问题,home回到主页面,app登录时重置了状态,再次打开时不是输入验证码的页面了,页面重置了。此路不通

 

 

 

方式(3)根据验证码的存储路径

通过链接数据库的方式来查询到此次下发的验证码,来进行send_keys,但是又由于发送服务不在本业务进行维护,无法链接别人业务的数据库,存在较大风险,因此也凉凉

 

方式(4)通过接口查询验证码

 

接口进行get请求拿到验证码的json返回值,通过json.loads来取值,取到要用的验证码code,因为验证码输入框不能直接进行send_keys,只能通过点击键盘的数字来进行输入。所以通过先将每个键位置确认好来组成一个数组来进行取值


但是因为验证码会存在0 所以在数组最后一位加上0的坐标。问题解决

但是后面仔细考虑可以通过参数化text的方式来实现
下面一行是 等待某个text出现进行点击,最多等待10s
self.d(text="删除").click()
我们只需要复制四行,参数text的方式来进行参数传参就可以解决。传什么数字就点哪个位置。此方法比较好。可以暂定为方式5吧。


验证码解决了就可以继续下面操作了。

下面列几个比较好的方法:

1.等待某个text出现进行点击
self.d(text="删除").click() 

2.拖动指定对象,到x,y 坐标
d(text="136****7022").drag_to(x=0.034, y=0.247, duration=0.5)  
3.获取页面taost
sess = cls.d.session('包名')
message = self.sess.toast.get_message()



 

推荐阅读