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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • rsyslogd内存占用率高_怎么减少系统内存占用

    rsyslogd内存占用率高_怎么减少系统内存占用用top,用ps都能看到。相伴的systemd-journalcpu和内存占用也很高。systemd-journal使用了持久化模式。其中一个服务1秒钟内打非常多的日志。一天好几个G。另外,sudojournalctl–verify也有错误输出。其他没什么异常。https://blog.csdn.net/qq_25518029/article/details/12001067…

    2022年8月15日
    8
  • 圣杯布局与双飞翼布局

    圣杯布局与双飞翼布局圣杯布局和双飞翼布局都是实现的三栏布局 两边的盒子宽度固定 中间盒子自适应 也就是我们常说的固比固布局 它们实现的效果是一样的 差别在于其实现的思想 圣杯布局的出现是来自于 alistpart 上的一篇文章 InSearchofth 比起双飞翼布局 它的起源不是源于对页面的形象表达 在西方 圣杯是表达 渴求之物 的意思 而双飞翼布局 源与淘宝的 UED 通过缩放页面就可以发

    2026年1月29日
    1
  • webstrom激活码2021_在线激活

    (webstrom激活码2021)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月30日
    143
  • MySQL 如何实现递归查询?「建议收藏」

    MySQL 如何实现递归查询?「建议收藏」点击上方IT牧场,选择置顶或者星标技术干货每日送达!前言最近在做的业务场景涉及到了数据库的递归查询。我们公司用的Oracle,众所周知,Oracle自带有递归查询的功能,所以…

    2022年6月16日
    215
  • QT是什么?

    QT是什么?了解QT踏上开发这条路已经有好几年了,通过这些年的学习,自己也总结了一些基础的知识,在这里,跟大家分享下。QT是什么1.Qt是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。2、Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(MetaObject

    2022年5月17日
    102
  • Archlinux安装教程及注意事项

    Archlinux安装教程及注意事项转载自 自用防失效 https www coolapk com feed shareKey ZDcyNzRmYzA5 amp shareUid amp shareFrom com coolapk market 11 4 3 个人参照此链接进行安装 同时说明途中遇到的问题及解决方案 archlinux 的安装教程 一 由于 archlinux 作为一个很激进的一个发行版所以它的安装方式在以后可能会与本篇文章有较多差异

    2026年2月2日
    4

发表回复

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

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