天天看點

Cypress系列(78)- getCookie() 指令詳解

如果想從頭學起Cypress,可以看下面的系列文章哦

https://www.cnblogs.com/poloyy/category/1768839.html

作用

擷取指定名稱的 Cookie

文法格式

cy.getCookie(name)
cy.getCookie(name, options)      

name 必傳 

options 參數

  • log:是否将指令顯示到指令日志中,預設 true
  • timeout:指令逾時時間

正确用法

// 擷取 token 這個 Cookie
cy.getCookie('token')      

指令傳回結果

傳回一個 Cookie 對象,并且包含以下屬性

  • domain
  • expiry (如果有)
  • httpOnly
  • name
  • path
  • sameSite (如果有)
  • secure
  • value

注意:當找不到指定 Cookie 時,該指令會傳回 null 

實際栗子

栗子一:直接通路網站

代碼

Cypress系列(78)- getCookie() 指令詳解
  • 可以用 .should(exist) 判斷 cookie 對象是否存在
  • 也可以用 .should('have.property') 判斷這個 cookie 對象的某個屬性是否包含指定的值
  • 最後用 .then() 暫存 cookie 對象,以便後續擴充使用

運作結果

Cypress系列(78)- getCookie() 指令詳解

getCookie 傳回結果

Cypress系列(78)- getCookie() 指令詳解

一個 cookie 對象一定會包含上面的六個屬性

栗子二:簡單登入頁面

//<reference types="cypress" /R>

describe('getCookie 登入頁面', function () {

    const username = 'jane.lane'
    const password = 'password123'

    before(function () {
        // 登入操作
        cy.visit("http://localhost:7079/login")
        cy.get("input[name=username]").type(username)
        cy.get("input[name=password]").type(password)
        cy.get("form").submit()
    })

    it('擷取登入後的 cookie', function () {
        cy.getCookie("cypress-session-cookie")
            .should('exist')
            .should('have.property', 'domain', "localhost")
            .then((cookies) => {
                cy.log(cookies)
            })
    })
})      

Cypress系列(78)- getCookie() 指令詳解

繼續閱讀