一、非PO模式与PO模式对比
非PO模式 | PO模式 |
---|---|
面向过程的线性脚本 | POM把页面元素定位和业务操作流程分开。实现松耦合。 |
复用性差 | UI元素的改变不需要修改业务逻辑代码。只需要找到对应的PO页修改定位即可,数据代码分离 |
维护性差 | PO能使我们的测试代码提高代码的可读性,高复用性,可维护性。 |
二、☆一般模型举例:
import unittest
from selenium import webdriver
from selenium.webdriver.common.by import By
class Test(unittest.TestCase):
def test01(self):
打开浏览器
driver = webdriver.Chrome()
加载百度首页
driver.get('http://www.baidu.com')
在百度搜索栏中输入软件测试
driver.find_element(By.ID, 'kw').send_keys('软件测试')
点击百度一下按钮
driver.find_element(By.ID, 'su').click()
def test02(self):
打开浏览器
driver = webdriver.Chrome()
加载百度首页
driver.get('http://www.baidu.com')
在百度搜索栏中输入软件测试
driver.find_element(By.ID, 'kw').send_keys('硬件测试')
点击百度一下按钮
driver.find_element(By.ID, 'su').click()
——————————————————————————————————————————————————————————————————
★PO模型举例:
1、基础层BasePage
from selenium import webdriver
class BasePage:
构造方法
def init(self):
打开浏览器
self.driver = webdriver.Chrome() # Alt+Enter
加载百度首页
self.driver.get('http://www.baidu.com')
封装定位元素
def find_ele(self,*args):
ele = self.driver.find_element(*args)
return ele
2、PO层:封装百度页面元素定位,元素对象以及页面操作
from selenium.webdriver.common.by import By
from base.base_page import BasePage
class BaiduPage(BasePage):
元素定位,
baidu_text_loc = (By.ID, 'kw')
baidu_submit_loc = (By.ID, 'su')
获得元素对象,
def get_text_obj(self):
ele = self.find_ele(*BaiduPage.baidu_text_loc)
return ele
def get_submit_obj(self):
ele = self.find_ele(*BaiduPage.baidu_submit_loc)
return ele
页面操作
def search(self,search_string):
self.get_text_obj().send_keys(search_string)
self.get_submit_obj().click()
3、测试用例层:业务逻辑和数据驱动
from ddt import ddt, data
from po.baidu_page import BaiduPage
@ddt
class BaiduTest(unittest.TestCase):
@data('软件测试','硬件测试')
def test01(self,seaString):
BaiduPage().search(seaString)
time.sleep(5)
if name == 'main':
unittest.main()
——————————————————————————————————————————————————————————————————
三、想要胜任UI自动化测试岗位还需要掌握以下内容:
1.python或java
2.selenium的API
3.unittest/pytest单元测试框架
4.htmltestrunner/allure测试报告
5.数据驱动dtt(excel,yaml,mysql)或pytest中的fixtrue
6.关键字驱动:公共类,方法封装,随机数,数据库连接,全局登录
7.全局配置文件处理
8.日志处理
9.断言
10.第三方库
11.git和github或码云集成开发!
12.jenkins持续集成
—————————————————————————————————————————————————————————————————
原文链接:https://blog.csdn.net/ZangKang1/article/details/112494907