Skip to content

2025-11-20-自动化测试-基础概念

这里仅仅是写基本的概念与基础的函数

要求:

  • 自动化测试
  • Web自动化测试
  • selenium

自动化测试

类型

  • 接口测试
  • UI 测试
    • Web自动化测试
    • 客户端界面测试
      • GUI自动化测试(PC端)
      • 移动端自动化测试

面试题

Q: 自动化测试能够取代人工测试吗?

A: ​ 不能,因为自动化测试是由测试人员手动编写的, 测试用例也是需要测试人员手动设计,自动化测试无法实现上面的两个功能,所以不能替代

Q: 自动化测试可以大幅减少测试的工作量?

A: ​ 不能,软件测试是贯穿软件的生命周期,软件的生命周期为:需求分析-计划-开发-测试-运维, 而自动化测试仅仅是在执行“测试”中有,因此也仅仅是对这个阶段有影响。 可以说在一定程度上减少工作量,但是不能说“大幅度减少”工作量

常用函数

一般函数的路径是直接在浏览器上面直接复制就可以了,不需要自己编写

要求:

元素定位

xpath

  • //: 递归查找子目录
  • /: 查找子目录,仅查找一级
  • [@]: 限制条件,里面写 HTML 的属性,比如查找 id 为 1 的,那么就写为 [@id='1']
  • ..: 返回上一级
  • [${nums}]: ${nums} 是占位符,填入数字,表示第几个

cssSelector

  • >: 表示下一级目录
  • #: 表示 id 这个 HTML 属性
  • .: 表示 class 这个 HTML 属性
  • nth-child: 表示孩子节点,传入的参数表示第几个孩子节点

操作测试对象

click

模拟左键单击,除了像有 display: none 这样的属性,基本上元素的都可以使用这个方法

sendkeys

发送内容,通常用于搜索等场景,但是它仅仅是发送内容,不提供点击支持

clear

清理文本,通常配合 sendKeys 这个方法使用

getText

获取纯文本内容,不能获取属性

如果需要获取属性对应的值,需要使用 getAttribute 这个方法

getTitle

获取当前句柄的标题,句柄这个概念在窗口中有

getCurrentUrl

获取当前句柄的网址,句柄这个概念在窗口中有

窗口

句柄

自动化测试-常用函数-窗口-句柄
自动化测试-常用函数-窗口-句柄

可以使用 getWindowHandlegetWindowHandles 来获取,通过 close 关闭当前句柄

  • getWindowHandle: 获取当前驱动控制的句柄
  • getWindowHandles: 获取所有句柄

窗口大小

driver.manage().window() 这个对象里面控制

  • maximize: 最大化窗口
  • minimize: 最小化窗口
  • fullscreen: 窗口全屏
  • setSize: 自定义大小窗口

窗口截图

使用 ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE) 来获取

接着把文件保存即可

通常用于查看验证码/二维码等是否正常加载

等待

它分为 强制等待,隐式等待,显示等待

  • 强制等待:使用 Thread.sleep 来等待,等待时间固定,一般用于测试的前期
  • 隐式等待:使用 driver.manage().timeouts().implicitlyWait 这个是全局等待,但是对弹窗无效
  • 显示等待:这个最复杂,但也是最灵活
    1. 先通过 new WebDriverWait 获取对象,参数传入 driverDuration 对象
    2. 使用 until, 里面传入 ExpectedConditions

导航

这个很简单,但如果是跳转到某个URL,只需要使用 driver.get() 即可,不是使用 to

导航是在 driver.navigate() 这个对象里面使用

  • back: 返回
  • forward: 前进
  • refresh: 刷新

弹窗

弹窗是不再 DOM 元素里面,它是在外面,所以不能使用常规方法使用, 使用 driver.switchTo().alert() 获取弹窗对象

  • accept: 点击确认按钮
  • dismiss: 点击取消按钮
  • sendKeys: 给输入框发送内容
  • getText: 获取弹窗文本

文件上传

由于文件上传是需要调用操作系统API, 所以弹出来的窗口也是操作系统,不能直接点击, 所以使用 sendKeys 这个方法来发送文件地址来测试

浏览器参数

  1. 使用 -headless 保证是后台打开
  2. 可以给浏览器加载策略设置不同参数
  • NONE: 不管是否加载,直接执行下一步
  • EAGER: 基本格式加载完,就可以执行下一步,不等图片之类的资源加载
  • NORMAL: 等所有内容加载完,才执行下一步,是默认的策略

问题解决

Q: 如果发现浏览器上面是有这个“路径”,但是代码执行一直找不到怎么办?

A: ​在通过代码驱动打开的浏览器里面检查,而不是自己打开的浏览器, 因为驱动打开的浏览器是无痕模式,里面没有插件/登录cookie等