Skip to main content
Cypress应用

Cypress.isBrowser

Cypress.isBrowser 用于检查当前浏览器是否匹配给定的名称或过滤器。

语法

Cypress.isBrowser(matcher)
Cypress.isBrowser(matchers)
Cypress.isBrowser(filter)

参数

matcher (String)

要检查的浏览器名称(不区分大小写)。名称前可以添加 ! 字符进行反向检查。

matchers (Array)

要检查的浏览器名称数组(不区分大小写)。名称前可以添加 ! 字符进行反向检查。

filter (Object or Array)

通过浏览器属性过滤一个或多个浏览器。可以使用 Cypress.browser 查看当前浏览器的属性。支持的属性包括:

属性类型描述
namestring机器友好的名称,如 chromeelectronfirefox
familystring使用的渲染引擎。chromiumfirefox
channelstring浏览器的发布渠道,如 stabledevcanary
displayNamestring浏览器的人类可读显示名称。
versionstring完整版本号。
pathstring浏览器在磁盘上的路径。Electron 浏览器为空。
majorVersionnumber | string浏览器的主版本号。
isHeadlessboolean浏览器是否以无头模式运行。
isHeadedboolean浏览器是否以有头模式显示。

示例

匹配器

仅在 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扩展了 matchermatchers 参数以支持浏览器过滤。
4.0.0添加了 isBrowser 命令。

另请参阅