【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()
相关推荐
xiami_world16 小时前
2026年UI/UX设计工具私有化部署方案深度解析
人工智能·ui·ai·产品经理·ux
川石课堂软件测试18 小时前
UI自动化测试|XPath元素定位实践
功能测试·测试工具·jmeter·microsoft·ui·postman·harmonyos
川石课堂软件测试19 小时前
UI自动化测试|CSS元素定位实践
css·测试工具·ui·fiddler·单元测试·appium·harmonyos
星辰徐哥1 天前
Spring Boot 数据导入导出与报表生成
spring boot·后端·ui
for_ever_love__1 天前
UI学习:UICollectionView瀑布流
学习·ui·ios·objective-c·cocoa
xiaobai1782 天前
pytest+playwright实现UI自动化(4)-上夹具fixture
ui·自动化·pytest·playwright
为何创造硅基生物2 天前
LVGL 妙用 LV_OBJ_FLAG_FLOATING
ui
ANnianStriver2 天前
PetLumina 04 — 管理后台 UI 全面升级
java·ui·ai编程
ANnianStriver2 天前
PetLumina 05 — App 端 UI 效果应用
java·ui·ai编程
小小龙学IT2 天前
Midscene.js:AI驱动的跨平台UI自动化革命
javascript·人工智能·ui