question_1:
1.当自动化测试过程中,待测app存在一些随机出现的弹窗消息,如:更新提示,服务规则确认弹窗等。如果在脚本中封装了处理事件,但是在之后弹窗未出现的话,测试就会报错,因为未能找到这个弹窗。下面是解决方法。
1.在基类下定义一个字典,名字随便取,然后里面的值为出现这些随机弹窗的定位属性,把它们记录在这个列表里。
2.在重写的元素定位的方法里面加上一个try异常判断,当如果能够直接定位到元素,就是走正常流程,元素定位然后执行操作。当定位元素未能找到的话,就走except下的流程,代码走到这里就相当于未能正确定位到对应的元素。然后执行一个自己定义handle_exception方法,这个方法就是遍历一下之前定义的列表,如果定位到这些元素,就认为这些弹窗现在已经在系统中出现,然后就执行点击方法,执行完成后再接着点击之前定位的元素,执行流程。
3.当之前业务元素定位未能找到,然后定义的列表里面的元素也未能找到,就会执行else里面的方法,可以打印一下错误,或者输出log,也可以直接pass,不输出。只要执行到这个流程里面,相当于就是用例异常了。
同理这个异常判断的方法也可以作用于其他重写的方法上,如click,sendkey,只要没能正确的执行操作,就判断是不是是不是满足这个异常情况,是的话就会被处理掉。
但是这个方法会稍微影响执行速度,因为元素定位一旦没找到,就会要遍历,遍历后再次寻找业务元素,可以在执行这个流程里面暂时修改静态等待时间,执行完这个流程后再把静态等待时间修改回来。
好处就是对这种随机出现的弹窗元素进行了处理,增强了代码的健壮性。