打造自己的测试框架

课程价值

  • appium 框架打造
  • 改造 po 设计思想

大纲

  • 黑名单处理
  • 装饰器改造

时长

90分钟

ppt

作业

  1. 实现黑名单功能
  2. 把黑名单加入使用装饰器

问题1:什么是黑名单?为什么叫黑名单?一般什么元素可以放进黑名单里?
问题2:app的验证图片或者短信怎么跳过?如果不想跳过,怎么设置60秒轮询一次去拿真实短信验证码?

1.黑名单就是异常情况处理列表,不定时不定位置偶尔会出现的特殊情况,将它的解决方法(比如评分的解决方法就是 下次再说 按钮的定位)加入到一个列表中,这样一旦出现正常流程卡住的情况,不直接报错终止,而是去循环检索黑名单中的解决方案,哪个通过了就说明哪个情况出现了,然后就可以用相应的方法解决掉,这样可以增强健壮性
2.这个只能参照一般的验证码解决办法 开发加万能码 关闭验证码 或者图像识别 。不过一般手机都不会要求每次登录,可以先手动登录一次之后设置noreset=true 这样一段时间内应该不需要登录了。读取短信是一个很大的权限,很危险很隐私,应该不太容易实现。。

测试框架作业

  • 实现黑名单功能
  • 把黑名单加入使用装饰器

作业地址:

find和finds都用黑名单装饰器装饰了

from appium.webdriver.webdriver import WebDriver
from selenium.webdriver.common.by import By


class BasePage():
    _blacklist=[(By.ID,'com.xueqiu.android:id/iv_close')]
    _errornum=0
    _maxnum=3

    def __init__(self,driver:WebDriver=None):
        self.driver=driver

    def find(self,by,locator=None):
        try:
            if locator == None:
                result= self.driver.find_element(*by)
            else:
                result= self.driver.find_element(by,locator)
            self._errornum=0
            return result
        except:
            if self._errornum>self._maxnum:
                self._errornum=0
                raise ValueError("超过最大次数")
            self._errornum+=1
            for elem in self._blacklist:
                elems=self.finds(elem)
                if len(elems)>0:
                    elems[0].click()
                    return self.find(by,locator=None)
            raise ValueError("元素不在黑名单中")


    def finds(self, by, locator=None):
        if locator == None:
            return self.driver.find_elements(*by)
        else:
            return self.driver.find_elements(by, locator)

作业地址

想请教个问题,你两个类写到一个页面里面,这符合语法么?

作业地址

黑名单装饰器作业

关闭