Cypress.isBrowser
Cypress.isBrowser
用于检查当前浏览器是否匹配给定的名称或过滤器。
语法
Cypress.isBrowser(matcher)
Cypress.isBrowser(matchers)
Cypress.isBrowser(filter)
参数
matcher (String)
要检查的浏览器名称(不区分大小写)。名称前可以添加 !
字符进行反向检查。
matchers (Array)
要检查的浏览器名称数组(不区分大小写)。名称前可以添加 !
字符进行反向检查。
filter (Object or Array)
通过浏览器属性过滤一个或多个浏览器。可以使用 Cypress.browser 查看当前浏览器的属性。支持的属性包括:
属性 | 类型 | 描述 |
---|---|---|
name | string | 机器友好的名称,如 chrome 、electron 或 firefox 。 |
family | string | 使用的渲染引擎。chromium 或 firefox 。 |
channel | string | 浏览器的发布渠道,如 stable 、dev 或 canary 。 |
displayName | string | 浏览器的人类可读显示名称。 |
version | string | 完整版本号。 |
path | string | 浏览器在磁盘上的路径。Electron 浏览器为空。 |
majorVersion | number | string | 浏览器的主版本号。 |
isHeadless | boolean | 浏览器是否以无头模式运行。 |
isHeaded | boolean | 浏览器是否以有头模式显示。 |
示例
匹配器
仅在 Chrome 中运行命令
it('download extension link', () => {
// 在 Firefox 中运行时为 true
if (Cypress.isBrowser('firefox')) {
cy.get('#dl-extension').should('contain', 'Download Firefox Extension')
}
// 在 Chrome 中运行时为 true
if (Cypress.isBrowser('chrome')) {
cy.get('#dl-extension').should('contain', 'Download Chrome Extension')
}
})
在所有浏览器中运行命令,除了 Chrome
it('warns to view page in Chrome browser', () => {
// 在 Firefox 等浏览器中运行时为 true
if (Cypress.isBrowser('!chrome')) {
cy.get('.browser-warning').should(
'contain',
'For optimal viewing, use Chrome browser'
)
}
})
匹配器数组
在指定的所有浏览器中运行命令
it('colors rainbow', () => {
// 在 Electron 或 Chrome 中运行时为 true
if (Cypress.isBrowser(['electron', 'chrome'])) {
cy.get('.rainbox').should(
'have.css',
'conic-gradient(red, orange, yellow, green, blue)'
)
}
})
在所有浏览器中运行命令,除了指定的浏览器
// 在非 Chrome 和 Electron 浏览器中运行时为 true
it('does not run in Firefox and Chrome', () => {
if (Cypress.isBrowser(['!electron', '!chrome'])) {
cy.get('#h4').should('have.css', 'font-size-adjust', '0.5')
}
})
过滤器
仅在基于 Chromium 的浏览器中运行命令
it('has CSS reflections', () => {
// 如果在基于 Chromium 的浏览器中(Chrome、Electron 等)
// 检查 CSS 属性是否正确应用
if (Cypress.isBrowser({ family: 'chromium' })) {
cy.get('.header').should('have.css', '-webkit-box-reflect', 'left')
}
})
仅在基于 Chromium 的浏览器的稳定版中运行
it('test', () => {
// 在任何基于 Chromium 的浏览器的稳定版中运行时为 true
if (Cypress.isBrowser({ family: 'chromium', channel: 'stable' })) {
// 测试一些(假设的)Chrome 稳定版场景
}
})
仅在特定发布渠道的浏览器中运行
it('test', () => {
// 在 Chrome Canary 和 Firefox 开发版中运行时为 true
if (
Cypress.isBrowser([
{ family: 'chromium', channel: 'canary' },
{ family: 'firefox', channel: 'dev' },
])
) {
// 测试一些(假设的)场景
}
})
注意事项
测试配置:browser
如果希望针对特定浏览器运行或排除测试或测试套件,建议在测试配置中传递 browser
选项。browser
选项接受与 Cypress.isBrowser()
相同的参数。
it('Download extension in Firefox', { browser: 'firefox' }, () => {
cy.get('#dl-extension').should('contain', 'Download Firefox Extension')
})
it('Show warning outside Chrome', { browser: '!chrome' }, () => {
cy.get('.browser-warning').should(
'contain',
'For optimal viewing, use Chrome browser'
)
})
历史
版本 | 变更 |
---|---|
4.8.0 | 扩展了 matcher 和 matchers 参数以支持浏览器过滤。 |
4.0.0 | 添加了 isBrowser 命令。 |