python+selenium自动化测试-24设计模式Page Object(PO)
2020-01-12 17:01
549 查看
Page Object(页面对象)是Selenium自动化测试项目开发实践的最佳设计模式之一。
Page Object主要体现了面向对象的两大基本特征:继承和封装。对界面交互细节的封装,这样可以使测试用例更关注业务而非界面细节,提高测试用例的可读性;通过抽象封装成一个BasePage类(封装公共方法),所有页面对象(Page类)均继承该基类,大幅减少冗余的代码,同时也提高了可维护性。
1、Page Object工作原理
Page继承BasePage,Page依赖TestCase,Webdriver在BasePage里面做环境初始化。
2、Page Object应用示例
2.1、Testlogin.py
# -- coding: utf-8 -- from PageObject_design.LoginPage import * from selenium import webdriver from time import sleep import unittest driver=webdriver.Firefox() class myUnit(unittest.TestCase): def setUp(self,driver=driver): print('setUp正在执行...') driver.implicitly_wait(10) driver.maximize_window() def tearDown(self): print("tearDown执行完毕!") def test_login(self): LoginPage.type_login(self.driver,"username","password")
2.2、LoginPage.py
# -- coding: utf-8 -- from PageObject_design.BasePage import * from selenium.webdriver.common.by import By class LoginPage(basePage): #首页登录页面 url='/' #元素定位器 username_loc=(By.ID,'username') password_loc=(By.ID,'pwd') submit_loc=(By.CLASS_NAME,'login-button') #用户名输入框元素 def type_username(self,username): self.find_element(*self.username_loc).clear() self.find_element(*self.username_loc).send_keys(username) # 密码输入框元素 def type_password(self,password): self.find_element(*self.password_loc).clear() self.find_element(*self.password_loc).send_keys(password) #登录按钮元素 def type_submit(self): self.find_element(*self.submit_loc).click() #登录功能模块封装 def type_login(driver,username,password): #测试用户名密码是否可以登录 login_page = LoginPage(driver) login_page.open() login_page.type_username(username) login_page.type_password(password) login_page.type_submit()
2.3、BasePage.py
# -- coding: utf-8 -- from time import sleep from selenium.webdriver.common.by import By class basePage(object): #页面基础类,定义父类BasePage def __init__(self,driver): self.driver=driver #self指的是类实例对象本身,和java里面的this是类似的 self.base_url='这里填入你的测试IP地址' self.timeout=10 #打开不同的子页面 def _open(self,url): rurl=self.base_url+url self.driver.maximize_window() self.driver.get(url) sleep(2) def open(self): self._open(self.url) #元素定位封装 def find_element(self,*loc): #*loc任意数量的位置参数(带单个型号参数) return self.driver.find_element(*loc) def find_elements(self,*loc): return self.driver.find_elements(*loc)
- 点赞 1
- 收藏
- 分享
- 文章举报
相关文章推荐
- Python3-Selenium3使用PO设计模式(Page Object)实现简单的页面登录操作
- Selenium的PO模式(Page Object Model)[python版]
- Selenium+Python :WebDriver设计模式( Page Object )
- Selenium的PO模式(Page Object Model)[python版]
- Selenium的PO模式(Page Object Model)|(Selenium Webdriver For Python)
- Selenium Page Object(PO)设计模式
- Python&Selenium自动化测试之PO设计模式
- Selenium的PO模式(Page Object Model)|(Selenium Webdriver For Python)
- Selenium自动化测试Python五:WebDriver设计模式
- selenium设计模式之PageObject
- Python Selenium设计模式 - PO设计模式
- selenium Object Page 设计模式理解及实现!
- Python+Selenium框架设计--- Page Object Model
- selenium中PO模式(Page Object Model)小结
- Python Selenium设计模式-POM
- Page Object设计模式
- Page Object设计模式实践
- Python Selenium设计模式-POM
- Page Object Model (Selenium, Python)(一)
- Selenium自动化Page模式(Python)