8.po 模式,base 。page、script

8.po 模式,base 。page、script,第1张

文章目录
    • base
      • 1. 新建base 类
      • 2. 填充base 内容
      • 3. 注意
    • page
      • 1. 搭建框架
      • 2. 填充
    • 业务层实现

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/578833.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-11
下一篇 2022-04-11

发表评论

登录后才能评论

评论列表(0条)

保存