Page Object基本概念
Page Object封装
主流程
- install app , first start app
- start app
- start activity
- testcases
def __init__(self):
if XueqiuPage.driver==None:
self.first_start()
else:
print("launch")
self.driver.start_activity(self.app, self.activity)
self.find((By.ID, "user_profile_icon"))
# WebDriverWait(self.driver, 60).until(expected_conditions.visibility_of_element_located((By.ID, "user_profile_icon")))
处理异常弹框
- 自定义find 智能化的等待
def find(self, locator):
#todo: 处理弹框 异常处理 动态浮动的元素的处理
try:
self.driver.find_element(*locator)
except Exception as e:
#黑名单处理
if BasePage.max>3:
raise e
BasePage.max=BasePage.max+1
for black in self.black_list:
elements=self.driver.find_elements(*black)
if len(elements)>=1:
elements[0].click()
self.find(locator)
不推荐teardown
- 如果遇到异常无法很好的收尾,会影响后续用例执行
绕开验证
处理短信验证码
- 不推荐
- 如果一定要用,让研发加万能码
- 如果研发支持不了,其实也是可以用app自动化
- 或者root过的红米手机,读取短信数据库
- 写一个agent,监听短信并发送到一个公共服务器用于读取,比如redis 数据库之类的
读取短信
def test_notification(self):
self.driver.open_notifications()
sleep(3)
print(self.driver.page_source)
self.driver.keyevent(4)
self.driver.launch_app()
如果绕过验证
- 第三方登陆
PO实战
- 登陆
- 行情
- 自选
- 完善你的find策略
- 完善主流程加载
- 数据驱动
- allure
把github的地址发出来,把allure的报告截图贴到回复里