二、PO模型之设计PO及模块串联设计讲解-4
1、base基础层
- D:\imooc\selenium\base\find_element.py
# 功能:进行逻辑处理,获取配置文件中的元素值 # 编码格式 #coding=utf-8 # 导入util包的读取配置文件代码中的类 from util.read_ini import ReadIni # 封装class class FindElement(object): # 以构造函数方式传入driver(因为要用,所以必须传) def __init__(self,driver): self.driver = driver # 获取元素值的函数 def get_element(self,key): # 实例化对象 read_ini = ReadIni() # 获取实例化对象指向的值 data = read_ini.get_value(key) # 拆分上述的值,取真正有用的值 by = data.split('>')[0] value = data.split('>')[1] # 加容错处理 try: if by == 'id': return self.driver.find_element_by_id(value) elif by == 'name': return self.driver.find_element_by_name(value) elif by == 'className': return self.driver.find_element_by_class_name(value) else: return self.driver.find_element_by_xpath(value) except: return None
2、page页面层
- 调用base基础层
- D:\imooc\selenium\page\register_page.py
- 页面就是元素。
- 将读取页面信息放在了page层。
- page页面层是给handle操作层提供页面元素的。
# Name -- 页面层 -- # Function -- 获取页面元素信息-- # Time -- 2022.11.18 -- # Developer -- zhangjieqiong -- # coding=utf-8 from base.find_element import FindElement class RegisterPage(object): def __init__(self,driver): self.find_element = FindElement(driver) def get_email_element(self): self.find_element.get_element("user_email")
3、handle操作层
- 调用page页面层
- D:\imooc\selenium\handle\register_handle.py
-
config里的元素如何拿到handle操作层进行处理?---》可以直接调用D:\imooc\selenium\history_test\find_element.py中的方法。
- 为了更加透彻清晰,建立page层。
- handle操作层,就是处理页面。
- 由handle操作层,调用page层。
# Name -- 操作层 -- # Function -- 处理注册项样本-- # Time -- 2022.10.19 -- # Developer -- zhangjieqiong -- # coding=utf-8 from page.register_page import RegisterPage class RegisterHandle(object): def __init__(self,driver): self.register_p = RegisterPage(driver) # 输入邮箱 def send_user_email(self,email): self.register_p.get_email_element().send_keys(email) # 输入用户名 def send_user_name(self): pass # 输入密码 def send_user_password(self): pass # 输入验证码 def send_user_code(self): pass # 获取文字信息 # user_info判断邮箱错误还是用户名错误 def get_user_text(self,user_info): pass
4、business业务层
- 调用handle操作层
- D:\imooc\selenium\business\register_business.py
# Name -- 业务层 -- # Function -- 执行操作层(注册页面) -- # Time -- 2022.11.17 -- # Developer -- zhangjieqiong -- # 通过handle获得的文字信息判断是否成功 # 是case和handle的桥梁 # coding=utf-8 # 需要实例化一个handle层 # 是从handle包中的register_handle.py导入了RegisterHandle类 from handle.register_handle import RegisterHandle class RegisterBusiness(object): # 在构造方法中,进行实例化RegisterHandle类 def __init__(self,driver): # register是局部的,self.register是全局的变量。 self.register_h = RegisterHandle(driver) # 执行操作 def login(self,email,name,password,code): # 括号中的email是case层传下来的 # self.register调用了handle层中的send_user_email()方法 self.register_h.send_user_email(email) if self.register_h.get_user_text("请输入有效的电子邮箱地址"): print("邮箱检验成功") return True elif self.register_h.get_user_text("字符长度必须大于等于4,一个中文字算2个字符"): print("用户名检验成功") self.register_h.send_user_name(name) self.register_h.send_user_password(password) self.register_h.send_user_code(code)
5、case样例层
- 调用business业务层
- D:\imooc\selenium\case\first_case.py
# Name -- 样例层 -- # Function -- 注册项样本 -- # Time -- 2022.10.19 -- # Developer -- zhangjieqiong -- # coding=utf-8 # 需要实例化一个business层 # 是从business包中的register_business.py的RegisterBusiness类 from business.register_business import RegisterBusiness class FirstCase(object): # 在构造方法中,进行实例化RegisterBusiness类,命名为login def __init__(self): self.login = RegisterBusiness() # 邮箱错误 def test_login_email_error(self): self.login.login('233','111111') # 通过assert判断是否为error pass # 用户名错误 def test_login_username_error(self): pass # 密码错误 def test_login_password_error(self): pass # 验证码错误 def test_login_code_error(self): pass # 成功 def test_login_success(self): pass