栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Python3+Selenium3自动化测试框架——③po模型设计

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python3+Selenium3自动化测试框架——③po模型设计

通过设计po模型,对页面定位和页面操作进行分离封装,实现多用例的测试。

总体结构:

case(用例)→business(业务层)→handle(操作层)→page(页面层)→base(公用)

一.用例层

first_case.py

# coding = utf-8
from business.register_business import RegisterBusiness
from selenium import webdriver


class FirstCase(object):
    def __init__(self):
        driver = webdriver.Chrome()
        driver.get("http://www.5itest.cn/register")
        self.login = RegisterBusiness(driver)

    def test_login_email_error(self):
        email_error = self.login.login_email_error('34', 'user11111', '111111', 'test1')
        if email_error:
            print("注册成功,此条case执行失败")
        # 通过assert判断是否为error

    def test_login_username_error(self):
        username_error = self.login.login_name_error('vfdvd@qq.com', 'ss', '11111', 'test1')
        if username_error:
            print("注册成功,此条case执行失败")

    def test_login_password_error(self):
        password_error = self.login.login_password_error('vfdvd@qq.com', 'user11111', '1111', 'test1')
        if password_error:
            print("注册成功,此条case执行失败")

    def test_login_code_error(self):
        code_error = self.login.login_code_error('vfdvd@qq.com', 'user11111', '11111', 'test1')
        if code_error:
            print("注册成功,此条case执行失败")

    def test_login_success(self):
        self.login.user_base('vfdvd@qq.com', 'user11111', '11111', 'test1')
        if self.login.register_success():
            print("注册成功")


def main():
    first = FirstCase()
    first.test_login_email_error()
    first.test_login_username_error()
    first.test_login_password_error()
    first.test_login_code_error()
    first.test_login_success()


if __name__ == '__main__':
    main()
二.业务层

register_business.py

# coding = utf-8
from handle.register_handle import RegisterHandle


class RegisterBusiness(object):
    def __init__(self, driver):
        self.register_h = RegisterHandle(driver)

    def user_base(self, email, name, password, code):
        self.register_h.send_user_email(email)
        self.register_h.send_user_name(name)
        self.register_h.send_user_password(password)
        self.register_h.send_user_code(code)
        self.register_h.click_register_button()

    def register_success(self):
        return self.register_h.get_register_text()

    # 执行操作
    def login_email_error(self, email, name, password, code):
        self.user_base(email, name, password, code)
        if self.register_h.get_user_text('email_error', "请输入有效的电子邮件地址") is None:
            print("邮箱检验不成功")
            return True
        else:
            return False

    # name错误
    def login_name_error(self, email, name, password, code):
        self.user_base(email, name, password, code)
        if self.register_h.get_user_text('user_name_error', "字符长度必须大于等于4,一个中文字算2个字符") is None:
            print("用户名检验不成功")
            return True
        else:
            return False

    # 密码错误
    def login_password_error(self, email, name, password, code):
        self.user_base(email, name, password, code)
        if self.register_h.get_user_text('password_error', "最少需要输入 5 个字符") is None:
            print("密码检验不成功")
            return True
        else:
            return False

    # 密码错误
    def login_code_error(self, email, name, password, code):
        self.user_base(email, name, password, code)
        if self.register_h.get_user_text('code_text_error', "验证码错误") is None:
            print("验证码检验不成功")
            return True
        else:
            return False
三.操作层

register_handle.py

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

    # 输入用户名
    def send_user_name(self, username):
        self.register_p.get_username_element().send_keys(username)

    # 输入密码
    def send_user_password(self, password):
        self.register_p.get_password_element().send_keys(password)

    # 输入验证码
    def send_user_code(self, code):
        self.register_p.get_code_element().send_keys(code)

    # 获取文字信息
    def get_user_text(self, info, user_info):
        if info == 'email_error':
            text = self.register_p.get_email_error_element().get_attribute('textContent')
        elif info == 'name_error':
            text = self.register_p.get_name_error_element().get_attribute('textContent')
        elif info == 'password_error':
            text = self.register_p.get_password_error_element().get_attribute('textContent')
        else:
            text = self.register_p.get_code_error_element().get_attribute('textContent')
        return text

    # 点击注册按钮
    def click_register_button(self):
        self.register_p.get_button_element().click()

    def get_register_text(self):
        return self.register_p.get_button_element().text
四.页面层

register_page.py

# coding = utf-8
from base.find_element import FindElement


class RegisterPage(object):
    def __init__(self, driver):
        self.fd = FindElement(driver)

    # 获取邮箱元素
    def get_email_element(self):
        return self.fd.get_element("user_email")

    def get_username_element(self):
        return self.fd.get_element("user_name")

    def get_password_element(self):
        return self.fd.get_element("password")

    def get_code_element(self):
        return self.fd.get_element("code_text")

    def get_button_element(self):
        return self.fd.get_element("register_button")

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

    def get_name_error_element(self):
        return self.fd.get_element("user_name_error")

    def get_password_error_element(self):
        return self.fd.get_element("password_error")

    def get_code_error_element(self):
        return self.fd.get_element("code_text_error")
五.公用

find_element.py

# coding=utf-8
from util.read_ini import ReadIni


class FindElement(object):
    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
六.配置文件

LocalElement.ini

[RegisterElement]
user_email=id>register_email
user_email_error=id>register_email-error
user_name=id>register_nickname
user_name_error=id>register_nickname-error
password=id>register_password
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

po模型尚存在的问题:验证码识别   输入框清空

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/733802.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号