UI测试

Python Selenium UI 自动化测试文档总结
整套资料分为两大模块,完整讲解 Selenium3.14.0 版本 UI 自动化,包含基础概念、环境搭建、元素定位、常用浏览器操作、各类页面特殊控件处理、实战案例与基础测试断言。
一、Selenium 基础介绍

  1. 核心定义
    Selenium 是 Python 第三方库,主打 Web UI 自动化测试,支持多浏览器、多系统、多编程语言,代码通过 WebDriver 驱动浏览器模拟真人操作页面。
    核心原理:WebDriver 采用 C/S 架构,代码客户端发送 HTTP 指令,浏览器驱动服务端执行操作并返回结果。
  2. 适用场景与优缺点
    作用
    模拟人工操作页面,完成重复回归、冒烟测试,减少人工漏测、节省测试人力。
    适用时机
    先做完接口测试、功能测试,再做 UI 自动化;需求频繁变动不适合自动化,自动化用例覆盖率建议 20%-40%。
    优势
    免费开源、安装简单、跨平台(Windows/Linux)、跨浏览器(Chrome/Firefox/Edge/IE/Safari)、支持 Java/Python 等多语言。
  3. UI 自动化 & 功能测试关系
    二者同等重要,UI 自动化是功能测试完成后的补充手段,不能替代功能测试。
    二、Selenium 环境搭建
  4. 库安装两种方式
    命令行:pip install selenium==3.141.0;pip list查看已安装包
    PyCharm 图形化:项目解释器中搜索 selenium 指定版本安装
  5. Chrome 浏览器配套配置
    查看 Chrome 版本,下载版本匹配的 chromedriver.exe 驱动
    驱动放置 Python 安装根目录,无需额外配置环境变量
    基础启动验证代码:打开百度,窗口最大化、输入内容
  6. 常见安装报错排查点
    urllib3 版本冲突、浏览器与驱动版本不匹配、驱动路径未识别。
    三、9 大元素定位方式(优先级规范)
  7. 定位优先级(从高到低)
    id(页面唯一,首选)
    name / class_name
    xpath /css_selector(无基础属性时使用)
    link_text/partial_link_text(仅超链接)
    tag_name、JS 执行定位(极少使用)
  8. 各定位方法使用示例
    表格
    定位方式 方法 适用场景
    id find_element_by_id() 输入框、按钮带唯一 id
    name find_element_by_name() 搜索框、表单元素 name 属性
    class find_element_by_class_name() 单一 class 属性元素
    完整链接 find_element_by_link_text() 精确匹配链接文字
    模糊链接 find_element_by_partial_link_text() 模糊匹配链接文字
    tag 标签 find_elements_by_tag_name() 批量获取同类标签(input/div 等)
    xpath find_element_by_xpath() 支持绝对路径 / 相对路径、多属性组合、层级定位
    css 选择器 find_element_by_css_selector() id 简写 #、class 简写.、层级、多属性组合
    JS 定位 execute_script 执行 JS 特殊难定位元素、滚动操作
  9. xpath 与 css 核心语法
    xpath://相对路径、/绝对路径、@属性匹配、支持 and 多属性筛选;
    css:# 代表 id、. 代表 class、> 表示层级、[] 匹配自定义属性。
    四、浏览器基础操作 API
  10. 页面跳转与窗口控制
    页面打开:get(url)覆盖当前窗口;window.open()新开标签页
    窗口尺寸:maximize_window()最大化、set_window_size(宽,高)自定义尺寸、get_window_size()获取尺寸
    页面导航:refresh()刷新、back()后退、forward()前进
    窗口关闭:close()关闭当前标签、quit()关闭全部浏览器进程
    页面信息:title获取网页标题,可用于页面断言
  11. 三种等待机制(重点)
    强制等待 sleep (n):固定休眠,无论页面是否加载完成,稳定性差;
    隐式等待 implicitly_wait (n):全局生效,最长等待 n 秒,页面加载完成立刻执行;
    显式等待 WebDriverWait:针对性等待指定元素出现,超出时间直接报错,自动化推荐。
  12. 多标签页切换
    current_window_handle:获取当前窗口句柄;
    window_handles:获取所有窗口句柄列表;
    switch_to.window(句柄)切换页面;
    实战:循环遍历句柄,匹配页面标题定位目标窗口。
    五、页面各类特殊控件处理
  13. 基础交互
    输入文本:send_keys("内容");点击按钮 / 链接:click()
    鼠标悬浮:ActionChains 链式操作 move_to_element ().perform ()
  14. 下拉选择框(select 标签)
    导入 Select 类,三种选中方式:
    select_by_index (索引) 从 0 开始;
    select_by_value (属性值);
    select_by_visible_text (页面展示文字)。
  15. Alert 弹窗处理
    切换弹窗:switch_to.alert;
    确认:accept ()、取消:dismiss ();
    输入弹窗:send_keys () 传入内容再确认。
  16. 文件上传
    文件上传 input 框直接使用 send_keys 传入本地文件绝对路径,无需操作系统弹窗。
  17. iframe 内嵌页面
    切入 iframe:switch_to.frame (元素对象);
    切回主页面:switch_to.default_content ();
    注意:iframe 内元素必须切入框架才能定位。
  18. 页面滚动
    通过 execute_script 执行 JS 控制滚动条:
    window.scrollTo (0,2000) 向下滚动;
    window.scrollTo (0,0) 回到顶部。
  19. 键盘 Keys 快捷键
    导入 Keys 类实现全选、复制、剪切、粘贴、回车确认:
    Ctrl+A 全选、Ctrl+X 剪切、Ctrl+V 粘贴、ENTER 回车、BACK_SPACE 退格删除。
    六、测试验证与断言
    自定义 if 判断:获取页面标题 / 元素文本,手动判断输出结果;
    assert 断言:不符合预期直接抛出异常终止用例,自动化标准校验方式;
    获取元素文本:元素.text 属性,用于校验按钮、链接文字。
    七、通用代码规范
    统一浏览器驱动对象管理;
    合理添加等待,避免页面未加载完成定位失败;
    复杂重复操作可封装函数简化代码;
    定位优先 id>name/class>xpath/css,减少不稳定定位。

posted on 2026-07-28 18:02  小房子i  阅读(2)  评论(0)    收藏  举报

导航