【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()
相关推荐
TomEval1 小时前
【Web UI 自动化】05 - KDT 模式原理与实现
前端·ui·自动化
简单Janeee5 小时前
[Vue 3 从零到上线]-第九篇:更美更强——引入 UI 库与网络请求 (Axios)
网络·vue.js·ui
中国软件测试质量协会17 小时前
奇林测试平台(kylinTOP)UI自动化测试能力深度解析
ui
greasyfork1 天前
Mac Sketch v2026.3 矢量图设计工具
macos·ui·sketch
zhchyun20081 天前
# 【Unity UI 进阶】仿 Element UI 打造企业级 Unity UI 组件库(06)
ui·unity·游戏引擎
中国软件测试质量协会1 天前
国产UI自动化测试工具的“技术代际“演进与自主可控之路
测试工具·ui·自动化
深念Y1 天前
NativeScript 移动端开发踩坑记录
前端·ui·vue·安卓·移动端·native·原生
晴天161 天前
从生成式 UI 到 Agent 驱动界面-Day32
ui
淼澄研学1 天前
Photoshop集成Firefly Image 3模型解析与API实操指南
ui·photoshop
加农炮手Jinx2 天前
Flutter for OpenHarmony 实战:flutter_animate 声明式动画让 UI 灵动如原生
flutter·ui·华为·harmonyos·鸿蒙