PO模式深入封装

PO模式深入封装目标1.能够采用继承的思想对PO模式进行深入的封装1.V6版本把共同操作提取封装到父类中,子类直接调用父类的方法,避免代码冗余1.对象库层-基类,把定位元素的方法定义在基类中2.操作层-基类,把对元素执行输入操作的方法定义在基类中1.1示例代码#base_page.pyfrompo.utilsimportDriverUtilcla…

大家好,又见面了,我是你们的朋友全栈君。

目标

1.  能够采用继承的思想对PO模式进行深入的封装

1. V6版本

把共同操作提取封装到父类中,子类直接调用父类的方法,避免代码冗余

1. 对象库层-基类,把定位元素的方法定义在基类中

2. 操作层-基类,把对元素执行输入操作的方法定义在基类中

 

1.1 示例代码

#  base_page.py
from  po.utils  import  DriverUtil class  BasePage:
"""
基类-对象库层
"""
 
def      init    (self):
self.driver  =  DriverUtil.get_driver()
 
def  find_element(self,  location):
return  self.driver.find_element(location[0],  location[1])
 
 
class  BaseHandle: """
基类-操作层
"""
 
def  input_text(self,  element,  text): """
在输入框里输入文本内容,先清空再输入
:param  element:  要操作的元素
:param  text:  要输入的文本内容
"""
element.clear() element.send_keys(text)
from  selenium.webdriver.common.by  import  By
 
from  po.v6.common.base_page  import  BasePage,  BaseHandle
 
 
 
class  LoginPage(BasePage): """
对象库层
"""
 
def      init    (self): super().    init    ()
 
# 用户名输入框
self.username  =  (By.ID,  "username") # 密 码
self.password  =  (By.ID,  "password")
# 验证码
self.verify_code  =  (By.ID,  "verify_code")
# 登录按钮
self.login_btn  =  (By.NAME,  "sbtbutton")
# 忘记密码
self.forget_pwd  =  (By.PARTIAL_LINK_TEXT,  "忘记密码")
 
def  find_username(self):
return  self.find_element(self.username)
 
def  find_password(self):
return  self.find_element(self.password)
 
def  find_verify_code(self):
return  self.find_element(self.verify_code)
 
def  find_login_btn(self):
return  self.find_element(self.login_btn)
 
def  find_forget_pwd(self):
return  self.find_element(self.forget_pwd)
 
 
 
class  LoginHandle(BaseHandle): """
操作层
"""
 
def      init    (self): self.login_page  =  LoginPage()
 
def  input_username(self,  username): self.input_text(self.login_page.find_username(),  username)
 
def  input_password(self,  pwd): self.input_text(self.login_page.find_password(),  pwd)
 
def  input_verify_code(self,  code): self.input_text(self.login_page.find_verify_code(),  code)
 
def  click_login_btn(self): self.login_page.find_login_btn().click()
 
def  click_forget_pwd(self): self.login_page.find_forget_pwd().click()
 
 
class  LoginProxy: """
业务层
"""
 
def      init    (self):  self.login_handle  =  LoginHandle()
 
# 登 录
def  login(self,  username,  password,  verify_code):
# 输入用户名
self.login_handle.input_username(username)
# 输入密码
self.login_handle.input_password(password)
# 输入验证码
self.login_handle.input_verify_code(verify_code)
# 点击登录按钮
self.login_handle.click_login_btn()
 
# 跳转到忘记密码页面
def  to_forget_pwd_page(self):
# 点击忘记密码
self.login_handle.click_forget_pwd()

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/131762.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 分区拉链表_列表分区

    分区拉链表_列表分区拉链表

    2022年10月16日
  • 数据结构完全二叉树性质

    数据结构完全二叉树性质完全二叉树若二叉树左子树高度-右子树高度小于等于1且大于等于0则称该二叉树为完全二叉树。二叉树一般性质:性质1:二叉树第i层上的结点数目最多为2i−1(i≥1)2^{i-1}(i\geq1)2i−1(i≥1)性质2:深度为k的二叉树至多有2k−1(k≥1)2^{k-1}(k\geq1)2k−1(k≥1)个结点性质3:包含n个结点的二叉树的高度至少为log⁡2n+1\log_2n+1log2​n+1性质4:在任意一棵二叉树中,若叶子结点的个数为n0n_0n0​,度为2的结点数为n2n_2n

    2022年5月31日
  • 剑指 Offer 06. 从尾到头打印链表(链表)

    剑指 Offer 06. 从尾到头打印链表(链表)输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 10000题解链表/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} *

    2022年8月8日
  • Python获取Websocket接口的数据

    Python获取Websocket接口的数据作者:小小明在前面的用Tornado实现web聊天室一文中介绍了python实现websocket的方法,这篇文章将要分享如何用python作为客户端获取websocket接口的数据。前文链接:https://blog.csdn.net/as604049322/article/details/112386560websocket的使用WebSocket是一种在单个TCP/TSL连接上,进行全双工、双向通信的协议。WebSocket可以让客户端与服务器之间的数据交换变得更加简单高效,服务端.

    2022年7月15日
  • 微服务架构设计模式 pdf下载_常见微服务架构

    微服务架构设计模式 pdf下载_常见微服务架构链接:https://pan.baidu.com/s/1RCsi9bDoPgQw0swztzsmBQ提取码:jhie若链接失效,请联系本人:18642984053@163.com

    2022年10月22日
  • Django 模型_django反向生成model

    Django 模型_django反向生成model前言随着项目越来越大,采用写原生SQL的方式在代码中会出现大量的SQL语句,那么问题就出现了:1.SQL语句重复利用率不高,越复杂的SQL语句条件越多,代码越长。会出现很多相近的SQL语句。2.

    2022年7月30日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号