【UI自动化测试】1_PO模式 _面向过程编码

文章目录

一、PO模式学习过程(版本迭代)

  • version_01:面向过程的编码形式
  • verison_02:pytest单元测试框架引入
  • version_03:引入python封装思维
  • version_04:Page Object页面封装PO
  • version_05:Page Object封装的优化(二次封装的引入,涉及继承)
  • version_06:引入数据驱动
yacas 复制代码
确认案例:登录案例--> 登录失败(账户不存在)、登录失败(密码错误)

二、面向过程编码

1、确认场景

2、面向过程脚本编写

3、发现问题

  • 测试用例文件不方便维护
  • 代码大量的冗余
  • 无断言、无测试报告
yacas 复制代码
version_01
- 不使用任何设计模式和单元测试框架。
- 每个文件里编写一个用例, 完全的面向过程的编程方式。  

version_01-存在的问题
- 无法批量运行:一条测试用例对应一个文件, 用例较多时不方便管理维护
- 代码高度冗余
- 没有断言
- 不能自动生成测试报告

version_01(包)
- __init__.py
- test_login_account_not_exist.py(账户不存在)
- test_login_password_error.py(密码错误)

2.1 test_login_account_not_exist.py

python 复制代码
# 1、导包
from time import sleep
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
# 2、打开浏览器 --创建浏览器驱动对象
driver = webdriver.Chrome()
# 最大化浏览器
driver.maximize_window()
# 隐式等待
driver.implicitly_wait(30)

# 3、打开测试网址url
driver.get("https://hmshop-test.itheima.net/")

# 4、暂停3s ->代替测试步骤
# a。使用Xpath 文本定位策略定位登录超链接,并点击
driver.find_element_by_xpath("//*[text()='登录']").click()
# b。使用Xpath 属性定位策略定位用户名输入框,并输入13600001111
driver.find_element_by_xpath("//*[@id='username']").send_keys("13611111111")
# c。使用Xpath  属性包含定位策略定位密码输入框,并输入123456
driver.find_element_by_xpath("//*[contains(@id,'pass')]").send_keys("123456")
# d。使用Xpath  属性与逻辑结合策略定位验证码输入框,并输入8888
driver.find_element_by_xpath('//*[@placeholder="验证码" and @id="verify_code"]').send_keys("8888")
# e。使用Xpath 层级与属性结合策略定位登录按钮,并点击;
driver.find_element_by_xpath("//*[@class='login_bnt']/a").click()
sleep(2)
# 获取错误提示信息
msg = driver.find_element(By.CSS_SELECTOR, ".layui-layer-content").text
print("msg:", msg)
# 断言
assert msg == "账号不存在!"
# 点击提示框确定按钮
driver.find_element_by_css_selector(".layui-layer-btn0").click()

# 关闭
sleep(3)
driver.quit()

2.2 test_login_password_error.py

python 复制代码
# 1、导包
from time import sleep
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
# 2、打开浏览器 --创建浏览器驱动对象
driver = webdriver.Chrome()
# 最大化浏览器
driver.maximize_window()
# 隐式等待
driver.implicitly_wait(30)

# 3、打开测试网址url
driver.get("https://hmshop-test.itheima.net/")

# 4、暂停3s ->代替测试步骤
# a。使用Xpath 文本定位策略定位登录超链接,并点击
driver.find_element_by_xpath("//*[text()='登录']").click()
# b。使用Xpath 属性定位策略定位用户名输入框,并输入13600001111
driver.find_element_by_xpath("//*[@id='username']").send_keys("13600001111")
# c。使用Xpath  属性包含定位策略定位密码输入框,并输入123456
driver.find_element_by_xpath("//*[contains(@id,'pass')]").send_keys("error")
# d。使用Xpath  属性与逻辑结合策略定位验证码输入框,并输入8888
driver.find_element_by_xpath('//*[@placeholder="验证码" and @id="verify_code"]').send_keys("8888")
# e。使用Xpath 层级与属性结合策略定位登录按钮,并点击;
driver.find_element_by_xpath("//*[@class='login_bnt']/a").click()
sleep(2)
# 获取错误提示信息
msg = driver.find_element(By.CSS_SELECTOR, ".layui-layer-content").text
print("msg:", msg)
# 断言
assert msg == "密码错误!"
# 点击提示框确定按钮
driver.find_element_by_css_selector(".layui-layer-btn0").click()

# 关闭
sleep(3)
driver.quit()
相关推荐
tedcloud1235 小时前
Docker Compose 部署 Uptime Kuma:配置 HTTPS、QQ 邮箱告警与数据备份
服务器·网络协议·ui·docker·容器·https·开源
笨笨饿6 小时前
#60_# 一、Photoshop 2025 如何批量导出 PSD 文件中的所有图层为独立 PNG 图片
stm32·单片机·嵌入式硬件·物联网·ui·51单片机·photoshop
qq_4260039615 小时前
UI自动化高频次登录login限流解决方案
python·ui·自动化
oicola2 天前
【UI动效】科幻风长任务进度动效设计方案
ui
xy34532 天前
Axure9.0 热区典型实战使用场景
ui·axure·原型·产品设计
喜欢吃豆3 天前
我开源了 Agent UI Lab 用交互实验理解 AG-UI A2UI 与 MCP Apps
ui·开源·大模型·交互
染指11104 天前
158.Agent-LangGraph-子图(共享状态和不共享状态模式)
开发语言·人工智能·python·ui·agent·agents
wuyk5554 天前
PyQt6-第14讲-数据库与Excel双向同步
数据库·python·ui·excel·pyqt
腾讯端服务4 天前
一码Duo端-Kuikly-iOS折叠屏新UI适配实践
android·ui·ios·kotlin·鸿蒙