news 2026/6/11 16:49:54

接口自动化 + UI 自动化双实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
接口自动化 + UI 自动化双实战

目录

一、环境准备

1. 安装依赖包

2. 浏览器驱动配置(Selenium 必需)

二、接口自动化实战(登录接口)

1. 接口模拟信息(真实项目从接口文档 / 抓包获取)

2. 完整自动化脚本(带断言、多用例、注释)

3. 脚本说明 & 执行

4. 扩展方向(企业常用)

三、UI 自动化实战(网页登录页面)

1. 页面元素定位规则(关键)

2. 完整 UI 自动化脚本

3. 核心知识点讲解

4. 运行效果

四、接口自动化 vs UI 自动化 区别(工作中怎么选)

五、入门进阶方向

补充小练习(巩固)


一、环境准备

1. 安装依赖包

打开 CMD / 终端执行:

# 接口自动化依赖 pip install requests # UI自动化依赖 pip install selenium

2. 浏览器驱动配置(Selenium 必需)

  1. 查看本地 Chrome 版本:浏览器右上角 → 设置 → 关于 Chrome
  2. 下载对应版本 ChromeDriver
  3. 两种配置方式二选一:
    • 方式 1:把chromedriver.exe放到Python 安装根目录(无需代码配置路径)
    • 方式 2:代码里手动指定驱动路径

二、接口自动化实战(登录接口)

1. 接口模拟信息(真实项目从接口文档 / 抓包获取)

  • 请求地址:http://127.0.0.1:8080/api/login(本地模拟接口,你可替换成真实接口)
  • 请求方式:POST
  • 请求头:Content-Type: application/json
  • 请求入参(JSON):

    json

    { "username": "账号", "password": "密码" }
  • 响应规则:
    1. 账号密码正确:{"code":200,"msg":"登录成功","data":{"token":"xxxx"}}
    2. 账号 / 密码为空:{"code":400,"msg":"请输入用户名/密码"}
    3. 账号密码错误:{"code":401,"msg":"账号或密码不正确"}
    4. 账号锁定:{"code":403,"msg":"密码错误次数过多,账号已临时锁定"}

2. 完整自动化脚本(带断言、多用例、注释)

# login_api_test.py 登录接口自动化测试 import requests # 接口基础地址 base_url = "http://127.0.0.1:8080/api/login" # 请求头 headers = { "Content-Type": "application/json" } def login(username, password): """封装登录请求方法""" payload = { "username": username, "password": password } # 发送POST请求 res = requests.post(url=base_url, json=payload, headers=headers) # 返回响应json数据 return res.json() # ========== 执行测试用例 + 断言 ========== if __name__ == '__main__': # 用例1:正常登录(正向用例) print("=== 用例1:正确账号密码登录 ===") res1 = login("test001", "123456abc") assert res1["code"] == 200, "用例1失败:登录未成功" print("用例1执行通过\n") # 用例2:用户名为空 print("=== 用例2:用户名为空 ===") res2 = login("", "123456abc") assert res2["code"] == 400 and res2["msg"] == "请输入用户名/密码", "用例2失败" print("用例2执行通过\n") # 用例3:密码错误 print("=== 用例3:密码错误 ===") res3 = login("test001", "wrong123") assert res3["code"] == 401 and res3["msg"] == "账号或密码不正确", "用例3失败" print("用例3执行通过\n") # 用例4:账号密码均为空 print("=== 用例4:账号密码都为空 ===") res4 = login("", "") assert res4["code"] == 400, "用例4失败" print("所有接口用例全部执行完成!")

3. 脚本说明 & 执行

  1. 封装思想:把重复的登录请求抽成login()函数,减少冗余代码
  2. 断言:自动化核心!用来自动判断结果是否符合预期,断言失败程序直接报错
  3. 执行:直接运行.py文件,控制台打印用例执行结果

4. 扩展方向(企业常用)

  • 接入测试框架:pytest(批量执行、生成测试报告、参数化用例)
  • 增加异常处理:超时、网络异常、接口 500 报错捕获
  • 数据分离:把账号密码、接口地址写到配置文件,硬编码不利于维护

三、UI 自动化实战(网页登录页面)

模拟手动打开浏览器 → 输入账号密码 → 点击登录 → 校验结果全流程。

1. 页面元素定位规则(关键)

假设登录页地址:http://127.0.0.1:8080/login.html页面元素:

  • 用户名输入框:id =username
  • 密码输入框:id =password
  • 登录按钮:id =loginBtn
  • 提示语标签:id =tipMsg

2. 完整 UI 自动化脚本

# login_ui_test.py 登录UI自动化测试 from selenium import webdriver from selenium.webdriver.common.by import By from time import sleep # 1. 初始化浏览器(不配置驱动路径就默认读取系统环境/Python目录下的chromedriver) driver = webdriver.Chrome() # 设置浏览器窗口大小 driver.maximize_window() # 设置页面加载超时时间 driver.implicitly_wait(5) try: # 2. 打开登录页面 url = "http://127.0.0.1:8080/login.html" driver.get(url) sleep(1) # 简单等待页面加载 # ========== 用例1:正常登录 ========== print("=== 执行UI用例1:正常登录 ===") # 定位输入框并输入内容 driver.find_element(By.ID, "username").send_keys("test001") driver.find_element(By.ID, "password").send_keys("123456abc") # 点击登录按钮 driver.find_element(By.ID, "loginBtn").click() sleep(2) # 断言:跳转首页(通过地址判断) assert "index.html" in driver.current_url, "UI用例1:登录跳转失败" print("UI用例1 通过\n") # 返回登录页,执行下一条用例 driver.get(url) sleep(1) # ========== 用例2:用户名空,直接点击登录 ========== print("=== 执行UI用例2:用户名为空登录 ===") driver.find_element(By.ID, "password").send_keys("123456abc") driver.find_element(By.ID, "loginBtn").click() sleep(1) # 获取页面提示文本并断言 tip_text = driver.find_element(By.ID, "tipMsg").text assert tip_text == "请输入用户名", "UI用例2 提示文案错误" print("UI用例2 通过\n") except Exception as e: print(f"脚本执行异常:{e}") finally: # 无论成功/失败,最后关闭浏览器 sleep(2) driver.quit()

3. 核心知识点讲解

  1. 元素定位(Selenium 核心,常用 4 种)
    • By.ID:优先级最高、最稳定(推荐优先使用)
    • By.NAMEBy.XPATHBy.CLASS_NAME:ID 不存在时使用
  2. 等待方式
    • implicitly_wait():隐式等待(全局,元素加载完就执行)
    • sleep():强制等待(简单粗暴,调试用,正式脚本少用)
  3. 操作动作
    • send_keys():输入文本
    • click():点击元素
    • text:获取元素文本
    • current_url:获取当前页面地址

4. 运行效果

  1. 自动拉起 Chrome 浏览器
  2. 自动输入账号密码、点击登录
  3. 自动校验页面跳转 / 提示文字
  4. 执行完毕自动关闭浏览器

四、接口自动化 vs UI 自动化 区别(工作中怎么选)

维度接口自动化UI 自动化
执行速度极快(无浏览器渲染)慢(启动浏览器、加载页面)
稳定性高(不受页面样式改动影响)较低(页面改布局 / 元素 ID 就会失败)
适用场景后端接口、核心业务流程、回归测试前端页面交互、完整流程模拟
维护成本

企业实战建议

  1. 优先做接口自动化:覆盖 80% 核心业务回归
  2. 关键页面流程补充少量UI 自动化:模拟真实用户操作
  3. 线上回归、每日巡检:主力使用接口自动化

五、入门进阶方向

  1. 框架升级:学习pytest + allure实现用例管理、精美测试报告
  2. 接口:学习 JMeter 做接口性能压测
  3. UI:学习 Playwright(新一代自动化框架,比 Selenium 更稳更快)
  4. 持续集成:把自动化脚本接入 Jenkins,实现每日自动跑用例

补充小练习(巩固)

基于上面代码自行拓展:

  1. 接口脚本新增「连续 5 次输错密码,账号锁定」用例并加断言
  2. UI 脚本新增「密码框切换显示 / 隐藏」的自动化步骤
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/11 16:47:52

金融领域钓鱼攻击中恶意域名伪装技术与防御研究

摘要 金融行业是网络钓鱼攻击的核心目标,攻击者大量使用违规、高风险域名搭建仿冒银行站点,依托域名视觉混淆、注册信息隐蔽、证书伪装等手段绕过传统安全检测体系,对用户资金安全与金融机构声誉造成严重威胁。本文结合境外安全媒体披露的银行…

作者头像 李华
网站建设 2026/6/11 16:43:39

5分钟掌握Carbon:终极代码美化工具让您的代码截图惊艳全场

5分钟掌握Carbon:终极代码美化工具让您的代码截图惊艳全场 【免费下载链接】carbon :black_heart: Create and share beautiful images of your source code 项目地址: https://gitcode.com/gh_mirrors/ca/carbon Carbon是一款革命性的开源代码美化工具&…

作者头像 李华
网站建设 2026/6/11 16:40:50

终极指南:PC版微信QQ防撤回补丁的完整解决方案

终极指南:PC版微信QQ防撤回补丁的完整解决方案 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: https://gitcode.com/GitHu…

作者头像 李华
网站建设 2026/6/11 16:36:53

Scrapy框架深度解析:Easy-scraping-tutorial企业级爬虫开发指南

Scrapy框架深度解析:Easy-scraping-tutorial企业级爬虫开发指南 【免费下载链接】easy-scraping-tutorial Simple but useful Python web scraping tutorial code. 项目地址: https://gitcode.com/gh_mirrors/ea/easy-scraping-tutorial 想要掌握Python网络…

作者头像 李华