前言:

  • 运行过程中不定时弹框(广告弹窗,升级提示框,新消息提示框等等)
  • 弹框不是 BUG(UI 界面提示,警告的作用)

弹窗黑名单处理

 1 # black_list 黑名单列表
 2 
 3 def find(self, by, locator):
 4     try:
 5         return self.driver.find_element(by, locator)
 6     except Exception as e:
 7         for black in black_list:
 8             # 查找黑名单中的每一个元素
 9             eles = self.driver.find_elements(*black)
10             if len(eles) > 0:
11                 eles[0].click()
12                 return find(by, locator)
13         raise e

封装:

  • 弹窗黑名单,不确定会弹什么,可以写在框架层,处理通用逻辑,
  • 在每一次查找元素的时候,去处理黑名单列表元素
  • 如果达到最大查找次数,还是异常,则抛出错误信息
  • 使用装饰器,让代码更简洁、易维护

使用装饰器

 1 # 声明一个黑名单列表
 2 black_list=[(元素1),(元素2)]
 3 
 4 # fun 相当于 find 方法
 5 def black_wrapper(fun):
 6     def run(*args, **kwargs):
 7         # args[0] 就是 find 里面的第一个参数 self
 8         basepage = args[0]
 9         try:
10             return fun(*args, **kwargs)
11         except Exception as e:
12             for black in black_list:
13                 eles = basepage.driver.find_elements(*black)
14                 if len(eles) > 0:
15                     eles[0].click()
16                     return fun(*args, **kwargs)
17             raise e
18     return run
19 
20 @black_wrapper
21 # 执行find时,会先执行black_wrapper方法
22 def find(self, by, locator)
23     return self.driver.find_element(by, locator)    

 

笔记2023-04-15

posted on 2023-04-16 23:37  三天乐趣  阅读(92)  评论(0编辑  收藏  举报