【App自动化测试】(十二)App异常弹框处理


前言
本文为在霍格沃兹测试开发学社中学习到的一些技术写出来分享给大家,希望有志同道合的小伙伴可以一起交流技术,一起进步~ 😘

app异常弹框是正常现象,比如系统弹框,使用过程中出现电话和信息。

弹框出现的位置和时机是非常不确定的,可能会出现在开始使用app时,也可能出现在app使用结束时。因此处理异常弹框的功能最好封装在框架层,可以在每次查找元素的时候来进行判断是否有弹框存在。

1. app弹框异常处理——递归方式

1.1 黑名单弹框异常处理逻辑

对于可预期的弹框,可使用黑名单弹框异常处理逻辑。

在这里插入图片描述

1.2 实现代码

    def find(self,by,locator):
        try:
            return self.driver.find_elementby(by,locator)
        except Exception as e:
	    print("未找到元素,处理异常")
	    # 使用find_elements()未找到的话会返回null,不会报错,可以保证流程正常进行下去。find_element()会报错导致程序无法正常运行下去
            eles = self.driver.find_elements(*black)
            if len(eles) > 0:
		#点击弹框
                eles[0].click()
		#继续查找元素
                return self.find(by,locator)
         raise e

1.3 方法缺点

  1. 当业务功能增加,逻辑复杂,代码会越来越复杂
  2. 代码不易理解与维护

2. app弹框异常处理——装饰器版本

2.1 装饰器的优势

  1. 对原有函数的功能增强
  2. 不改变原有函数功能的逻辑
  3. 使代码更简洁、更易维护

2.2 实现代码

  • 运行过程中不定时弹框(广告弹框、升级提示弹框、新消息提示弹框等等)

  • 弹框不是bug(ui界面提示、警告的作用)

# 声明一个黑名单
def black_wrapper(fun):
    def run(*args, **kwargs):
        basepage = args[0]
        try:
            return fun(*args, **kwargs)
        except Exception as e:
            for black in black_list:
                eles = basepage.driver.find_elements(*black)
                if len(eles) > 0:
                    eles[0].click()
                    return fun(*args, **kwargs)
         raise e
    return run

@black_wrapper
def find(self, by, locator)
    return self.driver.find_element(by, locator)

文末说明:
接口测试中我们很容易混淆Session、cookie和token,你知道他们有什么区别吗?

快来跟我一起看,一篇文章让你了解三者的区别。😎
⬇⬇⬇⬇⬇⬇⬇
👍👍👍:接口测试经典面试题:Session、cookie、token有什么区别?

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值