自动化异常处理机制

自动化异常处理机制

1. 简介

在移动端自动化测试过程中,会出现各种弹窗:广告窗口,升级窗口,评价窗口。弹窗的出现,极大的干扰了自动化测试的正常流程,测试会卡死甚至退出,此时需要对已有的 page_object 框架进行改造,加入弹窗处理机制。

2. 使用

查找元素前,需要检测是否有弹窗,如果出现弹窗则进行处理(点击弹窗的确定按钮或者关闭按钮)。下面代码对函数进行异常处理,如果出现弹窗,就会找不到元素抛出异常,异常处理会关闭弹窗,然后继续查找元素(使用递归),通常会维护一个黑名单(表示弹窗),由于代码过长,省略次要内容:

logging.basicConfig(level=logging.INFO)
_driver: WebDriver
_black_list = [
    (By.ID, 'tv_agree'),
    (By.XPATH, '//*[@text="确定"]'),
    (By.ID, 'image_cancel'),
    (By.XPATH, '//*[@text="下次再说"]')
]
_error_max = 10
_error_count = 0

_params={}

def find(self, locator, value: str = None):
    logging.info(locator)
    logging.info(value)

    try:
        # 寻找控件
        element = self._driver.find_element(*locator) \
        if isinstance(locator, tuple) else \
        self._driver.find_element(locator, value)
        # 如果成功,清空错误计数
        self._error_count = 0
        return element
    except Exception as e:
        # 如果次数太多,就退出异常逻辑,直接报错
        if self._error_count > self._error_max:
            raise e
        # 记录一直异常的次数
        self._error_count += 1
        # 对黑名单里的弹框进行处理
        for element in self._black_list:
            logging.info(element)
            elements = self._driver.find_elements(*element)
            if len(elements) > 0:
                elements[0].click()
                # 继续寻找原来的正常控件
                return self.find(locator, value)
        # 如果黑名单也没有,就报错
        logging.warn("black list no one found")
        raise e

需要注意代码中的计数器,每次执行会对异常次数进行计算,比如使用 _error_count ,如果发现异常错误大于限制的次数 _error_max ,则抛出异常。

小结

以上,掌握了这些测试进阶技巧,恭喜你的测试开发技术又向前迈出了一个台阶。接下来,我们一起来掌握更多进阶测试实战技能。

<p> 专刊包含了10+年经验测试架构师对测试职业发展的深度解读 帮助你掌握当下 BAT 流行的 App 自动化测试技术基础技能和工具使用;以及从入门到进阶的自动化测试实战经验,在面试中能够脱颖而出。 本专刊购买后即可解锁所有章节,故不可以退换哦~ </p> <p> <br /> </p> <p> <br /> </p>

全部评论

相关推荐

头像
04-26 15:00
已编辑
算法工程师
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务