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
获取当前句柄的网址,句柄这个概念在窗口中有
窗口
句柄
自动化测试-常用函数-窗口-句柄 可以使用
getWindowHandle和getWindowHandles来获取,通过close关闭当前句柄
getWindowHandle: 获取当前驱动控制的句柄getWindowHandles: 获取所有句柄
窗口大小
在
driver.manage().window()这个对象里面控制
maximize: 最大化窗口minimize: 最小化窗口fullscreen: 窗口全屏setSize: 自定义大小窗口
窗口截图
使用
((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE)来获取接着把文件保存即可
通常用于查看验证码/二维码等是否正常加载
等待
它分为 强制等待,隐式等待,显示等待
强制等待:使用Thread.sleep来等待,等待时间固定,一般用于测试的前期隐式等待:使用driver.manage().timeouts().implicitlyWait这个是全局等待,但是对弹窗无效显示等待:这个最复杂,但也是最灵活
- 先通过
new WebDriverWait获取对象,参数传入driver与Duration对象- 使用
until, 里面传入ExpectedConditions
导航
这个很简单,但如果是跳转到某个URL,只需要使用
driver.get()即可,不是使用to导航是在
driver.navigate()这个对象里面使用
back: 返回forward: 前进refresh: 刷新
弹窗
弹窗是不再 DOM 元素里面,它是在外面,所以不能使用常规方法使用, 使用
driver.switchTo().alert()获取弹窗对象
accept: 点击确认按钮dismiss: 点击取消按钮sendKeys: 给输入框发送内容getText: 获取弹窗文本
文件上传
由于文件上传是需要调用操作系统API, 所以弹出来的窗口也是操作系统,不能直接点击, 所以使用
sendKeys这个方法来发送文件地址来测试
浏览器参数
- 使用
-headless保证是后台打开- 可以给浏览器加载策略设置不同参数
NONE: 不管是否加载,直接执行下一步EAGER: 基本格式加载完,就可以执行下一步,不等图片之类的资源加载NORMAL: 等所有内容加载完,才执行下一步,是默认的策略
问题解决
Q: 如果发现浏览器上面是有这个“路径”,但是代码执行一直找不到怎么办?
A: 在通过代码驱动打开的浏览器里面检查,而不是自己打开的浏览器, 因为驱动打开的浏览器是无痕模式,里面没有插件/登录cookie等
