什么是po模式:po模式也就是页面对象模式,是自动化测试项目开发实践的最佳设计模式之一
为什么要用po模式:
好处1:通过对界面元素的封装-------减少冗余代码,提高可读性
好处2:若元素定位发生变化,只需调整页面元素的封装的代码------提高了测试用例的维护性
PO模式的业务分为多少层?
基础层:封装定位元素的方法
对象层:封装对元素的操作
业务层:将一个或多个操作组合起来,实现一个业务功能
实际例子:
基础层:
# -*-coding:utf-8-*-
from selenium import webdriver
from selenium.webdriver.common.by import By
class WEB():
def __init__(self,driver):
self.driver = driver
def findElement(self,*loc):
try:
return self.driver.find_element(*loc)
except:
print("定位元素失败")
对象层:
# -*-coding:utf-8-*-
from base.baseWeb import *
from selenium.webdriver.common.by import By
class Baidu(WEB):
so_loc = (By.ID,"kw")
def typeSo(self,keyword):
return self.findElement(*self.so_loc).send_keys(keyword)
业务层:
# -*-coding:utf-8-*-
# 导入时间模块
import time
from page.fix import *
from page.baiduPage import Baidu
class BaiDuSo(fix,Baidu):
def test001_so(self):
self.typeSo("hahaha")
time.sleep(5)
if __name__ == '__main__':
unittest.main(verbosity=2)
参考我的po模式文件建构:其中fix.py是吧 unittest的测试固件单独封装了起来
测试固件fix.py源码:
# -*-coding:utf-8-*-
import unittest
from selenium import webdriver
class fix(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
self.driver.get("https://www.baidu.com/")
self.driver.maximize_window()
self.driver.implicitly_wait(30)
def tearDown(self):
self.driver.quit()