那么问题来了:什么是PO模型呢?简单理解就是:把每个页面当成一个对象,给这些页面当成一个类,主要就是完成元素定位和业务操作;它和测试脚本区分开来,需要什么取这些页面类去调用即可。这样的好处在于页面元素发生变化时,只需要去维护页面类即可,其他部分就不用管。
GitHub代码commits id:73a583a
PO模型的基本思路:register_page(查找页面元素类) —> register_handle(操作层,将查找到的元素位置上传递数据) —> register_business(业务层:调用操作层,根据操作层的传递的结果进行判断场景,如邮箱错误场景等) —> first_case(封装调用业务层,进行测试用例的场景组装)
此处代码居多里面的详细操作教程稍后补上,这块的代码还有一个小问题,就是传递的数据会重复输入,下面章节将会采用新的方法来解决这个问题。
一、页面元素查找类
此页面当然是指的我们的注册页面了,通过前面的学习我们发现查找页面元素可以独立封装成一个类,以便在其他地方去调用。
#!/bin/usr/env python3
# -*- coding: utf-8 -*-
# --------------------------------
# ProjectName:
# Author: Crisimple
# CreateTime: 2019/6/10 17:34
# FileName: register_page.py
# Description: 主页用来获取注册页面的页面元素
# Question: PO的精髓:页面、case、数据分离开来
# --------------------------------
from code_package.base.find_element import FindElement
class RegisterPage(object):
def __init__(self, driver):
self.find_element = FindElement(driver)
def get_email_element(self):
return self.find_element.get_element("user_email")
def get_username_element(self):
return self.find_element.get_element("user_name")
def get_password_element(self):
return self.find_element.get_element("password")
def get_code_element(self):
return self.find_element.get_element("code_text")
def get_button_element(self):
return self.find_element.get_element("register_button")
# 错误信息......
# 获取邮箱栏错误提示
def get_email_error_info(self):
return self.find_element.get_element("register_email_error")
# 获取用户名错误提示
def get_username_error_info(self):
return self.find_element.get_element("register_username_error")
# 获取密码错误提示
def get_password_error_info(self):
return self.find_element.get_element("register_password_error")
# 获取验证码错误提示
def get_code_error_info(self):
return self.find_element.get_element("captcha_code_error")
二、数据操作类
很自然滴,查找到页面元素后当然是要给这些元素的输入框输入我们的注册数据了。当然这块是得调用到页面元素查找类。