【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()
相关推荐
Ulyanov17 小时前
《PySide6 GUI开发指南:QML核心与实践》 第十篇:综合实战——构建完整的跨平台个人管理应用
开发语言·python·qt·ui·交互·qml·雷达电子战系统仿真
Aotman_18 小时前
Element UI 表格搜索高亮
前端·javascript·vue.js·ui·elementui
久爱物联网18 小时前
【WinForm UI控件系列】散点图/折线图控件 (支持数值型、时间型、字符串型)
ui·winformui控件·c#控件ui·桌面应用ui控件·gdi绘制控件·散点图曲线图控件·时间型曲线图
RReality19 小时前
【Unity Shader URP】屏幕空间扭曲后处理(Screen Space Distortion)实战教程
ui·unity·游戏引擎·图形渲染·材质
Ulyanov19 小时前
《PySide6 GUI开发指南:QML核心与实践》 第八篇:性能优化大师——QML应用性能调优实战
python·qt·ui·性能优化·qml·系统仿真
报错小能手20 小时前
Swift UI 框架 实战 简易计数器、待办清单 、随机壁纸图库、个人笔记
ui·ios
ai_coder_ai21 小时前
自动化脚本ui编程之flexbox布局
ui·autojs·自动化脚本·冰狐智能辅助·easyclick
ZC跨境爬虫1 天前
UI前端美化技能提升日志day6:(使用苹果字体+计算样式对比差异)
前端·javascript·css·ui·状态模式
Ulyanov1 天前
《PySide6 GUI开发指南:QML核心与实践》 第二篇:QML语法精要——构建声明式UI的基础
java·开发语言·javascript·python·ui·gui·雷达电子对抗系统仿真
ai_coder_ai1 天前
自动化脚本ui编程之垂直滚动布局(vscroll)
ui·autojs·自动化脚本·冰狐智能辅助·easyclick