Commands
-
should()同.and()喷市,創(chuàng)建一個斷言,斷言會自動重試直到它們通過或超時。
.and(chainers)
.and(chainers, value)
.and(chainers, method, value)
.and(callbackFn)
使用案例
cy.get('.err').should('be.empty').and('be.hidden') // Assert '.err' is empty & hidden
cy.contains('Login').and('be.visible') // Assert el is visible
cy.wrap({ foo: 'bar' })
.should('have.property', 'foo') // Assert 'foo' property exists
.and('eq', 'bar') // Assert 'foo' property is 'bar'
-
as() 作用為分配別名以供以后使用崔兴,可在帶有@前綴的cy.get()或cy.wait()命令中引用別名五督。在匹配多個相同名稱的class和屬性中很好用藏否。
.as(aliasName)
使用方法
cy.get('.main-nav').find('li').first().as('firstNav') // Alias first 'li' as @firstNav
cy.route('PUT', 'users', 'fx:user').as('putUser') // Alias that route as @putUser
cy.stub(api, 'onUnauth').as('unauth') // Alias that stub as @unauth
cy.spy(win, 'fetch').as('winFetch') // Alias that spy as @winFetch
案例
it('disables on click', () => {
cy.get('button[type=submit]').as('submitBtn')
cy.get('@submitBtn').click().should('be.disabled')
})
通過和cy.fixture()
配合使用,可以使用this
來訪問和獲取到別名
beforeEach(() => {
cy.fixture('users-admins.json').as('admins')
})
it('the users fixture is bound to this.admins', function () {
cy.log(`There are ${this.admins.length} administrators.`)
})
另外充包,可以通過fixture()和as()給所有的路由命名
cy.route(/company/, 'fixture:company').as('companyGet')
cy.route(/roles/, 'fixture:roles').as('rolesGet')
cy.route(/teams/, 'fixture:teams').as('teamsGet')
cy.route(/users\/\d+/, 'fixture:user').as('userGet')
cy.route('PUT', /^\/users\/\d+/, 'fixture:user').as('userPut')
-
blur()和focus(),這就跟js的blur類似副签,就是從一個焦點的focus出來時,多值輸入框基矮,光標(biāo)離開輸入框的時候
使用案例
cy.get('[type="email"]').type('me@email.com').blur() // Blur email input
cy.get('[tabindex="1"]').focus().blur() // Blur el with tabindex
-
check(),在頁面中用于chekbox(es)多選和radio(s)單選
使用案例
cy.get('[type="checkbox"]').check() // Check checkbox element
cy.get('[type="radio"]').first().check() // Check first radio element
cy.get('form input').check(['subscribe', 'accept'])//指定value="subscribe"和value="accept"的選中
cy.get('[type="radio"]').check('US') //指定value="US的radio選中
-
children()獲取一組dom元素下所有的子元素
使用案例
cy.get('nav').children() // Yield children of nav
cy.get('ul.secondary-nav').children()
cy.get('ul').children('.active')
cy.get('.left-nav>.nav').children().should('have.length', 8)
-
clear() 清除value的值淆储,用于
input
和textarea
使用案例:
cy.get('[type="text"]').clear() // Clear text input
cy.get('textarea').type('Hi!').clear() // Clear textarea
cy.focused().clear() // Clear focused input/textarea
cy.get('textarea').clear().type('Hello, World')
-
click()點擊一個dom元素
使用方法
.click()
.click(options)
.click(position)
.click(position, options)
.click(x, y)
.click(x, y, options)
使用案例
cy.get('.btn').click() // Click on button
cy.focused().click() // Click on el with focus
cy.contains('Welcome').click() // Click on first el containing 'Welcome'
cy.get('.nav > a').click()
cy.get('img').click('topRight')
cy.get('#top-banner').click(15, 40)
cy.get('#collapse-sidebar').click('bottomLeft', { force: true })
cy.get('#footer .next').click(5, 60, { force: true })
.click()命令還可以與.type()命令結(jié)合使用鍵修飾符來觸發(fā),以便在單擊時模擬字符序列家浇,例如ALT + click遏考。 為了使修飾鍵保持活動狀態(tài),應(yīng)將{release:false}傳遞給.type()命令的選項蓝谨。
// execute a SHIFT + click on the first <li>
// { release: false } is necessary so that
// SHIFT will not be released after the type command
cy.get('body').type('{shift}', { release: false })
cy.get('li:first').click()