课程价值
- appium 框架打造
- 改造 po 设计思想
大纲
- 黑名单处理
- 装饰器改造
时长
90分钟
ppt
作业
- 实现黑名单功能
- 把黑名单加入使用装饰器
问题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)
想请教个问题,你两个类写到一个页面里面,这符合语法么?