二、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

 

posted @ 2022-11-22 16:31  酱汁怪兽  阅读(126)  评论(0编辑  收藏  举报