自动化异常处理机制
自动化异常处理机制
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 ,则抛出异常。
小结
以上,掌握了这些测试进阶技巧,恭喜你的测试开发技术又向前迈出了一个台阶。接下来,我们一起来掌握更多进阶测试实战技能。
测试高薪必备:移动APP自动化测试入门到实战 文章被收录于专栏
<p> 专刊包含了10+年经验测试架构师对测试职业发展的深度解读 帮助你掌握当下 BAT 流行的 App 自动化测试技术基础技能和工具使用;以及从入门到进阶的自动化测试实战经验,在面试中能够脱颖而出。 本专刊购买后即可解锁所有章节,故不可以退换哦~ </p> <p> <br /> </p> <p> <br /> </p>