screenshot
对被测应用进行截图,并可选择包含 Cypress命令日志。
语法
.screenshot()
.screenshot(fileName)
.screenshot(options)
.screenshot(fileName, options)
// ---或---
cy.screenshot()
cy.screenshot(fileName)
cy.screenshot(options)
cy.screenshot(fileName, options)
用法
正确用法
cy.screenshot()
cy.get('.post').screenshot()
参数
fileName (String)
图像文件的名称。将相对于 截图文件夹和 测试文件路径。当传入路径时,将创建对应的文件夹结构。 更多信息请参见下面的 命名规则。
options (Object)
传入一个选项对象以改变.screenshot()
的默认行为。
选项 | 默认值 | 描述 |
---|---|---|
log | true | 在命令日志中显示该命令 |
blackout | [] | 字符串选择器数组,用于匹配截图时应被涂黑的元素。不适用于runner 模 式的截图。 |
capture | 'fullPage' | 指定要截取Cypress测试运行器的哪些部分。此值对元素截图无效。有效值为viewport 、fullPage 或runner 。当为viewport 时,截取被测应用在当前视口中的部分。当为fullPage 时,截取被测应用从顶部到底部的全部内容。当为runner 时,截取整个浏览器视口,包括Cypress命令日志。对于测试失败时自动截取的截图,此选项始终强制为runner 。当启用Test Replay且Runner UI被隐藏时,runner 模式的截图将不包含Runner UI,而是仅截取被测应用在当前视口中的部分。 |
clip | null | 用于裁剪最终截图图像的位置和尺寸(以像素为单位)。应为以下形状:{ x: 0, y: 0, width: 100, height: 100 } |
disableTimersAndAnimations | true | 为true时,在截图期间阻止JavaScript定时器(setTimeout 、setInterval 等)和CSS动画运行。 |
padding | null | 用于调整元素截图尺寸的内边距。可以是一个数字,或最多四个数字的数组使用CSS简写表示法。此属性仅适用于元素截图,其他类型的截图将被忽略。 |
scale | false | 是否缩放应用以适应浏览器视口。当capture 为runner 时,此选项始终强制为true 。 |
timeout | responseTimeout | 等待.screenshot() 解 析的时长,超过则超时 |
overwrite | false | 保存时是否覆盖同名的重复截图文件。 |
onBeforeScreenshot | null | 在非失败截图前调用的回调函数。当截取元素截图时,参数为被截取的元素。对于其他截图,参数为document 。 |
onAfterScreenshot | null | 在非失败截图后调用的回调函数。当截取元素截图时,第一个参数为被截取的元素。对于其他截图,第一个参数为document 。第二个参数为关于截图的信息,包括保存的path 和截图的dimensions 。 |
有关这些选项的更多详情以及如何为所有.screenshot()
调用设置默认值,
请参阅Cypress.Screenshot API文档。
生成结果
.screenshot()
返回与传入时相同的主题。- 在
.screenshot()
之后继续链式调用依赖于主题的命令是不安全的。
示例
截图默认保存在cypress/screenshots
文件夹中。
您可以在Cypress配置中更改截图保存的目录。
无参数
截取截图
// cypress/e2e/users.cy.js
describe('我的测试', () => {
it('截取截图', () => {
// 截图将保存为
// cypress/screenshots/users.cy.js/我的测试 -- 截取截图.png
cy.screenshot()
})
})
文件名
截取截图并保存为指定文件名
// 截图将保存为
// cypress/screenshots/spec.cy.js/clicking-on-nav.png
cy.screenshot('clicking-on-nav')
截取截图并保存到指定目录
// 截图将保存为
// cypress/screenshots/spec.cy.js/actions/login/clicking-login.png
cy.screenshot('actions/login/clicking-login')
裁剪
将截图裁剪到指定位置和尺寸
// 截图将从顶部和左侧各裁剪20px
// 尺寸为400px x 300px
cy.screenshot({ clip: { x: 20, y: 20, width: 400, height: 300 } })
截取元素
截取第一个.post
元素的截图
cy.get('.post').first().screenshot()