A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 我是楠楠 黑马粉丝团   /  2019-9-19 15:28  /  799 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

【郑州校区】PO模式深入封装

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

1.1 示例代码

[AppleScript] 纯文本查看 复制代码
#  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:  要输入的文本内容
"""
[AppleScript] 纯文本查看 复制代码
element.clear() element.send_keys(text)

[AppleScript] 纯文本查看 复制代码
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()

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马