8.po 模式,base 。page、script

base

搭建框架:

1. 新建base 类

如下所示

这些方法解包的时候,只要一次解包 —— 在查找元素的时候解包
driver 是虚拟的,调用 base 的时候传入
loc 真正使用 loc 的方法,只有查找元素的时候使用

class base:
	# 初始化
	def _init_(self):
		pass
		
	# 查找元素方法 —— 提供:点击、输入、获取文本 方法使用
	def base_find_element(self):
		pass
	
	
	# 点击方法
	def base_click(self):
		pass
		
	# 输入方法
	def base_input(self):
		pass
	# 获取文本方法
	def base_get_text(self):
		pass
	# 截图方法
	def base_get_image(self):
		pass

查找元素的方法九种,八种基础的。一种底层的

2. 填充base 内容

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait

class Base:
    # 初始化
    def __init__(self):
        # self.driver = driver
        # 临时代替driver
        self.driver = webdriver.Firefox()
        self.driver.maximize_window()
        self.driver.get("http://localhost")

    # 查找元素方法 (提供:点击、输入、获取文本)使用  time 等待时间 poll_frequency 频率
    # 下面time = 30 ,里面写 timeout = timeout 的意思是,不传参的话,默认值为 30 ,传参的话,值就是 传进来的数值
    # 这就是 python 的封装
    def base_find_element(self, loc, timeout=30, poll=0.5):
        return WebDriverWait(self.driver, timeout=timeout, poll_frequency=poll).until(lambda x: x.find_element(*loc))

    # 点击方法
    def base_click(self, loc):
    # 当代码调用执行的时候 self.base_find_element(loc) 这句话就是元素了
        self.base_find_element(loc).click()

    # 输入方法
    def base_input(self, loc, value):
        el = self.base_find_element(loc)
        # 清空
        el.clear()
        # 输入
        el.send_keys(value)

    # 获取文本方法
    def base_get_text(self, loc):
        # 注意:一定要返回元素的文本信息,不然后面调用的时候,获取的值就一直是 0
        return self.base_find_element(loc).text

    # 截图方法
    def base_get_image(self):
        self.driver.get_screenshot_as_file("../iamge/fail.png")

3. 注意

元组解包,元组()tuple

在这里插入图片描述

page

类名 使用大驼峰

1. 搭建框架

模块名: page +实际操作模块名称 ,如:page_login.py
页面对象名:大驼峰
方法:设计元素,将每一个元素操作单独封装一个操作方法
组装:根据需求组装以上步骤
"""以下为登录页面元素配置信息"""

class PageLogin():
	# 点击登录链接 
	def page_click_login_link(self):
		pass
	# 输入用户名
	def page_input_username(self):
		pass
	# 输入密码
	def page_input_password(self):
		pass
	# 输入验证码
	def page_input_verity_code(self):
		pass
	# 点击登录按钮
	def page_click_login_btn(self):
		pass
	# 获取异常登录信息
	def page_get_error_info(self):
		pass
	# 点击异常信息框 确定
	def page_get_click_err_btn_ok(self):
		pass
	# 截图
	def page_get_screenshot(self):
		pass

	# 组合业务方法
	def page_login(self):
		pass

2. 填充

init.py


from selenium.webdriver.common.by import By

"""以下为登录页面元素配置信息"""
# 登录链接
login_link = By.PARTIAL_LINK_TEXT, "登录"
# 用户名  这里是 ID 所以 username 不用加# ,如果是 css 的话,要加
login_username = By.ID, "username"
# 密码
login_pwd = By.ID, "password"
# 验证码
login_verify_code = By.ID, "verify_code"
# 登录按钮  css 用点点 是 class
login_btn = By.CSS_SELECTOR, ".J-login-submit"
# 获取异常文本信息
login_err_info = By.CSS_SELECTOR, ".layui-layer-content"
# 点击异常提示框 按钮
login_err_btn_ok = By.CSS_SELECTOR, ".layui-layer-btn0"

"""以下为订单页面配置数据"""

page_login.py

from v4 import page
from v4.base.base import Base


class PageLogin(Base):
    # 点击登录链接
    def page_click_login_link(self):
        self.base_click(page.login_link)

    # 输入用户名  这里必须要传入 username 不然不能测试话,不能做相同业务逻辑测试
    def page_input_username(self, username):
        self.base_input(page.login_username, username)

    # 输入密码
    def page_input_password(self, pwd):
        self.base_input(page.login_pwd, pwd)

    # 输入验证
    def page_input_verify_code(self, code):
        self.base_input(page.login_verify_code, code)

    # 点击登录按钮
    def page_click_login_btn(self):
        self.base_click(page.login_btn)

    # 获取异常提示信息   看到获取一定要 return 
    def page_get_error_info(self):
        return self.base_get_text(page.login_err_info)

    # 点击异常信息框 确定
    def page_click_err_btn_ok(self):
        self.base_click(page.login_err_btn_ok)

    # 截图
    def page_get_img(self):
        self.base_get_image()

    # 组合业务方法
    def page_login(self, username, pwd, code):
        self.page_input_username(username)
        self.page_input_password(pwd)
        self.page_input_verify_code(code)
        self.page_click_login_btn()

业务层实现

# 导包  1.unittest  2.配置页面  3.driver
#  新建测试类 并继承
   # setUp
   # tearDown
   # 登陆测试方法
# 导包  1.unittest  2.配置页面  3.driver
import unotteat
from v4 page_login import Page_Login
#  新建测试类 并继承
class TestLogin(unittest.TestCase):
   # setUp
   def setUp(self):
   	# 实例化 获取页面对象 PageLogin
   	self.login = PageLogi()
   	# 点击登录链接
   	
   	
   		pass
   # tearDown
   def tearDown(self):
   	# 关闭 driver 驱动对象
   		pass
   # 登陆测试方法
   def test_login(self):
   	pass
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值