软件测试/测试开发丨App自动化测试-弹窗异常处理

点此获取更多相关资料

本文为霍格沃兹测试开发学社学员学习笔记分享

原文链接:https://ceshiren.com/t/topic/27692

黑名单处理

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

  • 弹框不是 BUG(UI 界面提示,警告的作用)

方法一:常规处理

python 复制代码
def find(self, by, locator):
    try:
        return self.driver.find_element(by, locator)
    except Exception as e:
        for black in black_list:
            eles = self.driver.find_elements(*black)
            if len(eles) > 0:
                eles[0].click()
                return find(by, locator)
        raise e

方法二:装饰器处理

装饰器的优势

  • 对原有函数的功能增强
  • 不改变原有函数的逻辑
  • 使代码更简洁、易维护
python 复制代码
__BLACK_LIST = []

def black_handle(func):
    """黑名单处理机制"""
    def _inner(*args, **kwargs):
        inner_arg = args[0]
        try:
            func(*args, **kwargs)
            # logger.info(f"查找元素:{locator}--->成功")
        except Exception as e:
            logger.info("未找到元素")
            logger.info(f"异常信息:{e}")
            logger.info("处理异常")
            for i in __BLACK_LIST:
                elements = inner_arg.driver.find_elements(*i)
                if len(elements) > 0:
                    elements[0].click()
                    return func(*args, **kwargs)
            raise e

    return _inner

装饰函数或方法

python 复制代码
@black_handle
def do_find(self, locator: tuple):
        """获取单个元素"""
        element = self.driver.find_element(*locator)
        logger.info(f"查找元素:{locator}--->成功")
        return element
相关推荐
databook7 小时前
时间序列数据,先拆规律还是先查异常
python·数据挖掘·数据分析
师夷长技以自愈8 小时前
手搓 AI Agent 第 8 篇:从手写循环到画流程图——LangGraph 封装
人工智能·python
aifannihao9 小时前
Rust 1.100 的 DropGuard:用 Python 实测失败回滚与吞异常
python·rust·异常处理·标准库·contextlib
用户0190275816110 小时前
天勤 tqsdk 能做 A 股行情吗?期货强项与股票数据选型
python
2601_9679791212 小时前
pip在Python中的9个必须知道的用法
python·pip·版本控制·包管理工具·requirements.txt
曲径海盗12 小时前
【Python 学习第 58 天】列表方法
python·学习笔记·编程入门
DeepVisionary12 小时前
Runway开源机器人大模型Praxis-1,推演延迟压到62毫秒
python·自动化
Cooper2513 小时前
DDC 命令成功但屏幕不动:用 gamma 表重做亮度映射
python·mac
师夷长技以自愈14 小时前
手搓 AI Agent 第 7 篇:菜做砸了别硬炒——错误分类 + 双账本熔断
人工智能·python
用户9562562542914 小时前
15 分钟社媒简报 Agent:我只用了搜索和模型两步
python·api