首页 > 其他分享 >二、PO模型之注册界面组装成完整的自动化case-5

二、PO模型之注册界面组装成完整的自动化case-5

时间:2022-12-28 16:45:14浏览次数:40  
标签:case 组装 get -- self register element user PO

  • base层:基础层。获取配置文件中的元素值。
  • page层:页面层。页面就是元素。将读取页面信息放在page中,page给handle提供页面元素。
  • handle层:定义方法,调用page层。即处理page。config中的元素如何拿到handle中进行处理。
  • business层:实例化handle层中的类。调用case层中的参数,handle层中的方法。
  • case层:根据规则设计即可。实例化business层中的类。获取参数,调business层中的方法。

 

  • first_case.py引用了register_business.py中的login函数。验证了邮箱错误。
  • register_business.py引用了register_handle.py中的send_user_email()函数。用于输入邮箱。
  • register_handle.py引用了register_page.py中的get_email_element()函数。用于获取邮箱元素。
  • register_page.py引用了base层的LocalElement.ini配置的元素。
  • find_element.py是用于逻辑处理。使用split拆分LocalElement.ini中的值。从而获取真正有用的值。

 

1、D:\imooc\selenium\config\LocalElement.ini

# 功能:配置文件夹config中的配置文件LocalElement.ini

# 节点名称
[RegisterElement]

# Element id_name and id_value
user_email=id>register_email
user_email_error=id>register_email-error

user_name=id>register_nickname
user_name_error=id>register_nickname-error

user_password=id>register_password
user_password_error=id>register_password-error

code_image=id>getcode_num
code_text=id>captcha_code
code_text_error=id>captcha_code-error

register_button=id>register-btn

 

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

 

3、D:\imooc\selenium\page\register_page.py

# 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")

    def get_username_element(self):
        self.find_element.get_element("user_name")

    def get_password_element(self):
        self.find_element.get_element("user_password")

    def get_code_element(self):
        self.find_element.get_element("code_text")

    def get_button_element(self):
        self.find_element.get_element("register_button")

    def get_email_error_element(self):
        return self.find_element.get_element("user_email_error")

    def get_name_error_element(self):
        return self.find_element.get_element("user_name_error")
    
    def get_password_error_element(self):
        return self.find_element.get_element("user_password_error")

    def get_code_error_element(self):
        return self.find_element.get_element("code_text_error")

 

4、D:\imooc\selenium\handle\register_handle.py

# 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,user_email):
        self.register_p.get_email_element().send_keys(user_email)
    # 输入用户名
    def send_user_name(self,user_name):
        self.register_p.get_username_element().send_keys(user_name)
    # 输入密码
    def send_user_password(self,user_password):
        self.register_p.get_password_element().send_keys(user_password)
    # 输入验证码
    def send_user_code(self,code_text):
        self.register_p.get_code_element().send_keys(code_text)
    # 获取文字信息

    # user_info判断邮箱错误还是用户名错误
    def get_user_text(self,user_info):
        if user_info == 'user_email_error':
            self.register_p.get_email_error_element().get_attribute('value')
        elif user_info == 'user_name_error':
            self.register_p.get_name_error_element.get_attribute('value')

    # 点击注册按钮
    def click_register_button(self):
        pass

 

5、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,user_email,user_name,user_password,code):
        # 括号中的email是case层传下来的
        # self.register调用了handle层中的send_user_email()方法
        self.register_h.send_user_email(user_email)
        self.register_h.send_user_name(user_name)
        self.register_h.send_user_password(user_password)
        self.register_h.send_user_code(code)
        self.register_h.click_register_button()
        if self.register_h.get_user_text("请输入有效的电子邮箱地址"):
            print("邮箱检验成功")
            return True
        else:
            return False

        # elif self.register_h.get_user_text("字符长度必须大于等于4,一个中文字算2个字符"):
            # print("用户名检验成功")
        # elif self.register_h.get_user_text(""):
            # print("用户名检验成功")
            # return True

 

6、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('34','user11',)
        # 通过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

 

标签:case,组装,get,--,self,register,element,user,PO
From: https://www.cnblogs.com/jieqiong1755/p/16915573.html

相关文章

  • POI2013
    PriceList可以发现答案只有三种:要么最短路乘\(a\),要么最短路换成\(b\),要么最短偶数路换成\(b\)。这里的最短偶数路还要满足不经过\((x,y),(y,z)\)且\((x,z)\)有边。前......
  • sharepoint 网站锁定或只读
    当sharepoint备份到一半突然关掉或备份不成功时,有时网站停止在锁定或只读状态,这时需执行下面命令。1Set-SPSite-Identity"http://sp2016-test002"-LockState"Unlock"......
  • 调用feign远程get请求的接口却提示 Request method ‘POST‘ not supported
    调用feign远程get请求的接口却提示“Requestmethod‘POST‘notsupported”修改前后的feign接口对比:(修改前)复制代码/**获取用户*/@GetMapping("/user/list")R......
  • 【python】抽象基类 from abc import ABC, abstractmethod
    abc模块作用Python本身不提供抽象类和接口机制,要想实现抽象类,可以借助abc模块。ABC是Abstract BaseClass的缩写。假设我们定义一些抽象方法,然后子类继承的时候必须要重......
  • 高德地图异常Cannot read properties of undefined (reading 'addressComponent')
    异常  本次的原因是页面没有加入密钥增加密钥如下: 其他原因:可能是申请的key类型不对,重新选择类型申请key,本次选的是Web端(JS API) ......
  • POJ 2287 Tian Ji -- The Horse Racing(贪心 记忆化搜索)
    POJ2287TianJi--TheHorseRacing题意​ 田忌赛马的故事,相信大家都知道,不多赘述。田忌和国王各有n匹马,每匹马都有一个能力值,两匹马赛跑的话,能力值高者胜。田忌每......
  • PostgreSQL数据库操作(2)
    一、数据库常规操作1.创建数据库//数据库登录psql-h服务器-U用户名-d数据库-p端口./psql-Upostgres-p5432-h127.0.0.1//创建数据库postgres=#crea......
  • POJ 2531 Network Saboteur(DFS)
    POJ2531NetworkSaboteur题意​ 把n个节点分成AB两组,给出矩阵\(C_{i,j}\),求\(\sum{C_{i,j}}(i\inA,j\inB)\)的最大值。思路​ n很小,直接爆搜做。枚举一下......
  • 导轨安装DIN22 IPO OC系列模拟信号隔离放大器0-±5V/0-±10V/0-20mA/ 4-20mA
    概述导轨安装DIN22IPOOC系列模拟信号隔离放大器是一种将输入信号隔离放大、转换成按比例输出的直流信号混合集成厚模电路。产品广泛应用在电力、远程监控、仪器仪表、医疗......
  • PostgreSQL单机安装与介绍(1)
    一、PostgreSQL简介官网:https://www.postgresql.org/下载地址:https://www.postgresql.org/download/linux/redhat/源码下载:https://www.postgresql.org/ftp/source/v15.......