Python+Selenium+PO设计模式实战指南

news/2025/11/28 16:44:55/文章来源:https://www.cnblogs.com/falamo/p/19282926

1. PO设计模式概述

PO设计模式将网页的页面元素和操作封装到类中,每个页面对应一个类,每个类中的方法代表与页面交互的操作。这种方式有助于将页面元素的定位和操作与测试脚本的逻辑解耦,从而提高代码的可维护性。

2. PO设计模式的核心思想

  • 页面与测试代码分离:页面类只关心页面元素的定位和操作,而测试类只关注测试逻辑。
  • 封装页面元素和操作:页面对象类封装了页面中的所有元素以及对这些元素的操作。
  • 提高复用性:相同页面的不同测试用例可以重用相同的页面对象类。

3. Page Object模型的优缺点

优点:

  • 代码复用:多个测试用例可以共享一个页面对象,避免重复代码。
  • 易于维护:当页面发生变化时,只需要修改页面对象类,不需要改动所有的测试用例。
  • 清晰的层次结构:测试脚本关注测试逻辑,页面对象关注页面交互,职责分离。

缺点:

  • 学习曲线:对于初学者来说,理解和实现PO模式需要一定的学习时间。
  • 类的数量增加:每个页面都需要一个页面对象类,可能导致类文件过多。

4. PO设计模式的结构

PO设计模式通常包括三个部分:

  • Page Object:页面对象类,封装了页面元素和操作。
  • Test Case:测试用例类,调用页面对象进行测试。
  • Test Driver:测试驱动脚本,运行测试用例。

5. 如何使用Selenium + unittest结合PO设计模式

使用Selenium和unittest框架编写自动化测试时,可以按照以下步骤实现PO设计模式。

封装基类

from selenium.common import TimeoutException
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWaitclass Base:def __init__(self):self.driver = webdriver.Chrome()self.driver.maximize_window()self.driver.get(r'http://localhost:8080/')def base_find_element(self, loc, timeout=10, poll=0.5):"""定位元素:param loc: 元组 (By.ID,属性值) (By.CLASS_NAME,属性值) (By.XPATH,属性值):param timeout: 超时时间:param poll: 轮询间隔:return: 元素定位对象"""return WebDriverWait(self.driver, timeout, poll).until(lambda x: x.find_element(*loc))def base_click(self, loc):self.base_find_element(loc).click()def base_input(self, loc, value):el = self.base_find_element(loc)el.clear()el.send_keys(value)def base_get_info(self, loc, path):try:self.base_find_element(loc)return Trueexcept TimeoutException:self.base_get_image(path)return Falsedef base_get_image(self, path):return self.driver.get_screenshot_as_file(path)

步骤1:定义页面对象类

页面对象类封装了与页面元素的交互,常见的操作包括点击按钮、输入文本、获取页面内容等。

from selenium.webdriver.common.by import By"""登录页数据"""
login_login_link = By.XPATH, "/html/body/header/div/div/nav/div/div/a[1]"
login_username = By.NAME, 'username'
login_password = By.NAME, 'password'
login_login_button = By.XPATH, "/html/body/div[1]/div/div[2]/form/button"
login_login_info = By.XPATH, "/html/body/header/div/div/nav/div/div/div/button"
from v4.base import Base
from v4 import pageclass PageLogin(Base):def page_click_login(self):"""点击登录链接"""self.base_click(page.login_login_link)def page_input_username(self, username):"""输入用户名"""self.base_input(page.login_username, username)def page_input_password(self, password):"""输入密码"""self.base_input(page.login_password, password)def page_click_login_button(self):"""点击登录按钮"""self.base_click(page.login_login_button)def page_get_info(self, path, username, password):"""获取登录信息"""if self.base_get_info(page.login_login_info, path):print(f"账号:{username} 密码:{password} 登录成功")else:print(f"账号:{username} 密码:{password} 登录失败")def page_login(self, username, password, path):"""登录操作"""self.page_click_login()self.page_input_username(username)self.page_input_password(password)self.page_click_login_button()self.page_get_info(path, username, password)

步骤2:编写测试用例

测试用例类继承unittest.TestCase,在其中编写具体的测试逻辑。页面对象类的实例化和方法调用将在测试用例中进行。

import unittest
from parameterized import parameterized
from v4.page.page_login import PageLoginclass TestLogin(unittest.TestCase):def setUp(self):self.login = PageLogin()def tearDown(self):self.login.driver.quit()@parameterized.expand([("demo", "demo123", "demo_demo123.png"),("falamo1", "falamo1", "falamo1_falamo1.png")])def test_login(self, username, password, path):self.login.page_login(username, password, path)if __name__ == '__main__':unittest.main()

6. 总结

PO设计模式可以让自动化测试更加模块化、易于维护和扩展。通过将页面操作封装到页面对象类中,我们可以让测试用例更加简洁,便于理解和修改。此外,PO模式能够有效地提高自动化测试的复用性和可扩展性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/979862.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年PC砖批发厂家权威推荐榜单:地铺石/仿石材砖‌/石材‌源头厂家精选

在绿色建筑与城市生态建设政策推动下,PC砖(预制混凝土砖)凭借其环保属性、高强度、仿石质感及成本优势,市场需求持续增长。行业数据显示,2031年全球PC仿石砖市场销售额预计实现稳定增长,其中中国市场在全球占据重…

2025建材推荐榜:煌匠美缝剂_环氧地坪_彩砂自流平,装修选材必看!

2025 建材推荐榜:煌匠美缝剂 / 环氧地坪 / 彩砂自流平,装修选材必看装修选材时,美缝剂、环氧地坪、彩砂自流平的品质直接决定空间颜值与耐用性。在 2025 建材行业推荐榜中,河南煌匠建材有限公司凭借十三年深耕积淀…

数据泄露已成为现实威胁,你的Salesforce安全做好了吗?

近年来,很多知名企业因为数据泄露遭遇了巨大的损失。Facebook、Equifax大家都不陌生。问题来了,不仅客户数据丢失,信任也会丧失,赔偿和品牌形象损害更是“雪上加霜”。 作为Salesforce顾问,我们的工作不仅仅是配置…

【IEEE出版 | EI检索】第七届国际科技创新学术交流大会暨信息技术与计算机应用学术会议(ITCA 2025)

第七届信息技术与计算机应用学术会议(ITCA 2025) 作为第七届国际科技创新学术交流大会的分会场开展,大会将于2025年12月19-21日在中国广州隆重举行。【本届会议已上线至IEEE官方列表】 第七届国际科技创新学术交流大会…

实用指南:LSTM模型做二分类(PyTorch实现)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年东莞樟木头搬家服务权威推荐榜单:东莞同城搬家公司/东莞厚街搬家服务/东莞大岭山搬家服务精选

在东莞樟木头地区,随着城市建设和居民生活需求的不断变化,专业、可靠的搬家服务已成为企业和家庭在搬迁过程中的核心需求。根据相关行业数据显示,2025年东莞地区搬家服务市场规模预计将持续增长,其中家庭搬家、企业…

2025年办公场地口碑推荐:前10名优质场地揭晓,办公场地/园区/企业独栋办公场地出售推荐排行榜单

前言 随着企业转型升级步伐加快,办公场地的选择已成为影响企业发展的重要因素。本文基于市场调研数据,从区位交通、产品设计、配套设施、服务体系等维度,对当前市场上表现优异的办公场地进行客观分析,为企业在选址…

河南煌匠建材:专注美缝剂、环氧地坪、彩砂自流平,15年匠心守护优质空间 (2)

河南煌匠建材:专注美缝剂、环氧地坪、彩砂自流平,15 年匠心守护优质空间2010 年,煌匠集团于香港正式启航,以 “匠心筑品质,创新赢市场” 为核心理念深耕建材领域。如今,集团旗下子公司河南煌匠建材有限公司(注册…

6款免费AI毕业论文工具推荐:一键生成+零成本降重,效率翻倍

作者分享校园论坛大四学生临近答辩论文仍无头绪的事,引出 6 款免费 AI 毕业论文工具。包括能 30 分钟生成论文初稿、支持在线改稿的 PaperNex;改稿功能出色的瑞达写作;专注教育领域文献的 ERIC;极速生成初稿且智能…

打开文件夹

nautilus /usr/bin/

MySQL执行过程

目录MySQL执行过程修正binlog开启状态一句话总结SQL执行:总结要点数据恢复崩溃恢复(自动)手动恢复(人为)一句话对比 MySQL执行过程 修正 MySQL - 一条 SQL 的执行过程详解 | Java 全栈知识体系 其中修正:数据库连…

2025年11月SEM扫描电镜厂家推荐榜:进口/国产/日立/国仪/钨灯丝/FIB/日立冷场/电子/场发射/高分子/超高分辨率/扫描电镜品牌综合参考指南,上海富泰微——微观视界的硬核担当

2025年,扫描电子显微镜(SEM)行业持续保持10%以上的年增长率,市场规模稳步攀升,成为材料科学、纳米技术等领域不可或缺的核心装备。在众多从业者的选型需求下,兼具技术实力与服务保障的企业更受青睐,以下这份推荐…

玩 Linux 随便记录点东西

声明:本文有大量内容由 AI 生成,但是这些内容经过验证。 QQ 9 更改存储位置 好像改不了,只能把原来的聊天记录复制过来。 具体来说,把原来以 QQ 号命名的文件夹里的 nt_qq 文件夹里的东西,复制到 ~/.config/QQ/nt…

占有率最高的工业总线:PROFINET、Modbus 与 EtherCAT

占有率最高的工业总线:PROFINET、Modbus 与 EtherCAT剑指工控 作者: 工控老王 剑指工控 06-10 08:03 投诉 阅读数:1443​​引言 在工业自动化领域,通信协议的选择是保障生产效率、设备协同及系统稳定运行的关键因…

2025年11月深圳网站建设公司TOP榜:知名网站建售/外贸网站建设公司后保障双维度解析

在数字化转型深入推进的当下,企业官网已从基础信息展示平台升级为品牌传播与业务拓展的核心载体,优质的网站建设服务成为企业实现数字化突破的关键支撑。对于企业而言,选择一家专业、可靠的网站建设服务商,直接关系…

如何判断一个痛点是结构性痛点(值得做生意)还是噪音(不要理会)?

1、看频率和普遍性 是很多人都在骂这个问题,还是只有一个人在骂? 噪音: 只有一个评论提到,这个蓝色按钮太丑了。【🛰:和平本记】 这是主观审美,不是市场需求 结构性痛点: 你在某个社交平台上看到有5个人都在抱…

2025年广东家装全屋定制推广权威推荐榜单:广东全屋家具定制/广东全屋整装家具定制/广东全屋定制柜子供货商精选

在消费升级与品质家居需求持续增长的背景下,广东家装全屋定制行业凭借创新的设计理念、先进的生产工艺和完善的服务体系,已成为引领全国家居潮流的重要力量。随着住宅产业化与装修标准化进程加速,绿色环保、智能家居…

一文通关天文物理顶刊

聚焦天文物理,解锁选刊神器,深度解析顶刊!01.The Astrophysical Journal Supplement Series 期刊介绍 《The Astrophysical Journal Supplement Series》是天文与天体物理领域顶尖期刊,该刊为 SCIE 收录期刊, 2025…

企业智能ITR升级指南:客户服务体系的实践思考

一文讲清ITR如何重塑企业服务能力:基于燕千云AI-ITR平台,加速企业迈向智能服务流时代。11月20日,“向智而行数链未来——2025第四届数智时代高峰论坛之走进汤臣倍健”活动在广东珠海圆满落幕。本次活动由上海中商网…

【IEEE出版 | EI检索】第七届国际科技创新学术交流大会暨通信、信息系统和软件工程学术会议(CISSE 2025)

通信、信息系统与软件工程学术会议(CISSE 2025)作为第七届国际科技创新学术交流大会分会场开展。大会将于2025年12月19-21日在中国广州隆重举行。【延续IEEE出版 | 连续6届稳定见刊检索 | 马来西亚理工大学、湘潭大学…