2026赛前辅导-web自动化测试

全国测试开发大赛

https://mp.weixin.qq.com/s/hi5Ke1W6fihVQscYc6bSMw

测试开发赛道:https://mp.weixin.qq.com/s/wyCY-pFyvHvi27vvnJ7YXQ

比赛报名地址:https://ccf.org.cn/cat2026

目前比赛报名时间截止到 5月27日

测试开发赛道官方选手通知QQ群:1102401108

考试范围

业务测试、算法、web 自动化测试和接口自动化测试相关的技能。

赛前技能准备

  • 掌握一门编程语言:python/java
  • 掌握对应语言的单元测试框架:pytest/JUnit
  • 软件测试的基础理论
  • web 自动化测试:selenium
  • 接口自动化测试:python 推荐使用 requests,java 推荐使用 restassured

目录

  • 学习路径
  • selenium 环境搭建
  • web 自动化测试脚本编写

web 自动化测试学习路径

环境搭建

安装selenium

  • 命令行安装: pip install selenium
  • 界面化安装:settings → project → python interpreter

安装 chromedriver

旧版本:https://chromedriver.storage.googleapis.com/index.html

新版本:Chrome for Testing availability

控件定位

八大定位

定位方式 描述
class name class 属性对应的值
css selector(重点) css 表达式
id(重点) id 属性对应的值
name(重点) name 属性对应的值
link text 查找其可见文本与搜索值匹配的锚元素
partial link text 查找其可见文本包含搜索值的锚元素。如果多个元素匹配,则只会选择第一个元素
tag name 标签名称
xpath(重点) xpath 表达式

css 常见操作

表达式 描述
.intro class=“intro” 的所有元素
#firstname id=“firstname” 的所有元素
a[target=“_blank”] 具有属性 target=“_blank” 的所有 a 元素
p:nth-child(2) 属于其父元素的第二个 p 元素

xpath 规则

表达式 结果
/ 从该节点的子元素选取
// 从该节点的子孙元素选取
* 通配符
nodename 选取此节点的所有子节点
.. 选取当前节点的父节点
@ 选取属性

控件交互

  • 元素查找
    • 查找单个元素 find_element
    • 查找多个元素 find_elements
  • 元素操作
    • 点击 ele.click()
    • 清空 ele.clear()
    • 输入 ele.send_keys()
  • 元素获取
    • 获取元素文本 ele.text
    • 获取元素属性 ele.get_attribute

自动化测试用例结构

自动化测试用例 作用
用例标题 测试包、文件、类、方法名称 用例的唯一标识
前提条件 setup_method、setup_class 测试数据构造,
用例步骤 测试方法内的代码逻辑 测试用例具体的步骤行为
预期结果 assert 实际结果 = 预期结果 断言,印证用例是否执行成功
实际结果 assert 实际结果 = 预期结果 断言,印证用例是否执行成功
后置动作 teardown_method、teardown_class(Pytest) 数据清理,数据还原

自动化关键数据记录

  • 日志
  • 页面源码:driver.page_source
  • 截图: driver.save_screenshot
import logging
import os
from logging.handlers import RotatingFileHandler

# 绑定绑定句柄到logger对象
logger = logging.getLogger(__name__)
# 获取当前⼯具⽂件所在的路径
root_path = os.path.dirname(os.path.abspath(__file__))
# 拼接当前要输出⽇志的路径
log_dir_path = os.sep.join([root_path, '..', f'/logs'])
if not os.path.isdir(log_dir_path):
    os.mkdir(log_dir_path)
# 创建⽇志记录器,指明⽇志保存路径,每个⽇志的⼤⼩,保存⽇志的上限
file_log_handler = RotatingFileHandler(os.sep.join([log_dir_path, 'log.txt']),
                                       maxBytes=1024 * 1024, backupCount=10, encoding="utf-8")
# 设置⽇志的格式
date_string = '%Y-%m-%d %H:%M:%S'
formatter = logging.Formatter(
    '[%(asctime)s] [%(levelname)s] [%(filename)s]/[line: %(lineno)d]/[%(funcName)s] %(message)s ', date_string)
# ⽇志输出到控制台的句柄
stream_handler = logging.StreamHandler()
# 将⽇志记录器指定⽇志的格式
file_log_handler.setFormatter(formatter)
stream_handler.setFormatter(formatter)
# 为全局的⽇志⼯具对象添加⽇志记录器
# 绑定绑定句柄到logger对象
logger.addHandler(stream_handler)
logger.addHandler(file_log_handler)
# 设置⽇志输出级别
logger.setLevel(level=logging.INFO)

实战练习

  • 场景:测试人社区搜索功能
  • 地址:https://ceshiren.com/
  • 要求:
    • 完成自动化用例编写
    • 添加日志、截图和源码信息
    • 添加对应的断言信息

测试用例

用例标题 类型 前提条件 用例步骤 预期结果 实际结果
测试人搜索功能 冒烟 进入测试人首页 1.点击搜索按钮
2.输入搜索关键词
3.点击高级搜索按钮
4.选择第一条搜索结果标题
搜索成功,标题包含搜索的关键字

代码实现

总结

  • 知识点梳理
  • 环境搭建
  • 知识点回顾
  • 实战练习

web_auto_test.zip (15.9 KB)