Cypress - Cookie


Cypress 使用Cookies.preserveOnce()Cookies.defaults() 方法處理 Cookie。如果 Cookie 發生任何更改,Cookies.debug() 方法會將日誌輸出到控制檯。

預設情況下,Cypress 會在每次測試執行之前刪除所有 Cookie。我們可以利用Cypress.Cookies.preserveOnce()來保留指定名稱的 Cookie,以便在其他測試中使用。

語法

Cypress 中與 Cookie 相關的命令語法如下:

這將在配置或清除 Cookie 值時生成控制檯日誌。

Cypress.Cookies.debug(enable, option)

這裡:

  • enable – 是否啟用 Cookie 的除錯。

  • option – 配置 Cookie 的預設值,例如保留 Cookie。

Cypress.Cookies.debug(true) // logs will generate if cookies are modified
cy.clearCookie('cookie1')
cy.setCookie('cookie2', 'val')

降低日誌級別。

Cypress.Cookies.debug(true, { verbose: false })
Cypress.Cookies.debug(false) // logs will not generate if cookies are modified

以下語法將保留 Cookie,並且在執行另一個測試之前不會清除它們。

Cypress.Cookies.preserveOnce(cookie names...)

此語法用於修改全域性配置並維護一組在測試中保留的 Cookie。任何修改都將適用於該特定測試。(儲存在 cypress/support/index.js 檔案中,並在測試執行之前載入)。

Cypress.Cookies.defaults(option)
Cypress.Cookies.defaults({
   preserve: 'cookie1'
})

這裡,名為 cookie1 的 Cookie 在執行測試之前不會被清除。

Cookie 方法

Cypress 中的一些 Cookie 方法如下:

  • cy.clearCookies() - 它刪除當前域名和子域名下的所有 Cookie。

  • cy.clearCookie(name) - 它根據名稱從瀏覽器中刪除 Cookie。

  • cy.getCookie(name) - 用於根據名稱從瀏覽器中獲取 Cookie。

  • cy.getCookies() - 用於獲取所有 Cookie。

  • cy.setCookie(name) - 可以配置 Cookie。

實現

以下是 Cypress 中 Cookie 方法的實現:

describe('Tutorialspoint Test', function () {
   // test case
   it('Scenario 1', function (){
      // launch the application
      cy.visit("https://#");
      // enable cookie logging
      Cypress.Cookies.debug(true)
      //set cookie
      cy.setCookie('cookie1', 'value1')
      //get cookie by name and verify value
      cy.getCookie('cookie1').should('have.property', 'value', 'value1')
      //clear cookie by name
      cy.clearCookie('cookie')
      //get all cookies
      cy.getCookies()
      //clear all cookies
      cy.clearCookies()
      //verify no cookies
      cy.getCookies().should('be.empty')
   });
});

執行結果

輸出如下:

Cookie Methods
廣告