如何在 WebdriverIO 中管理 Cookie?

rest assureddynamic programmingprogramming更新于 2025/4/5 9:07:17

我们可以在 WebdriverIO 中管理 Cookie。Cookie 有助于识别用户。它是一种将信息从一个站点会话传递到另一个站点会话,或在两个已连接网站的会话之间传递的有效技术。

我们可以使用 WebdriverIO 中的 − 方法添加、删除和获取 Cookie。

  • browser.setCookies - 用于为当前页面设置一个或多个 Cookie。要为页面设置 Cookie,我们必须首先启动并进入该页面。

语法

browser.setCookies({cookie, cookie.name, cookie.value, cookie.path,
cookie.domain, cookie.secure, cookie.httpOnly, cookie.expiry} )

此处,cookie 是 Cookie 对象或对象数组,可以包含以下值 −

  • cookie.name - 可选参数,表示 Cookie 名称。

  • cookie.value - 可选参数,表示 Cookie 值。

  • cookie.path - 可选参数,表示 Cookie 路径。默认值为 /(如果在添加 Cookie 时未添加)。

  • cookie.domain - 可选参数,表示 Cookie 的域名。默认值为当前浏览上下文活动文档的 URL 域名(如果在添加 Cookie 时未添加)。

  • cookie.secure - 可选参数,用于检查 Cookie 是否安全。默认值为 false(如果在添加 Cookie 时未添加)。

  • cookie.httpOnly - 可选参数,用于检查 Cookie 是否为 HTTP 类型。默认值为 false(如果在添加 Cookie 时未添加)。

  • cookie.expiry.

  • browser.getCookies - 用于从现有页面获取 Cookie。如果将 Cookie 名称作为参数提供给此方法,则将获取该特定的 Cookie。否则,将获取当前页面的所有 Cookie。

语法

//获取特定 Cookie
browser.getCookies(['Topic'])
或者,
//获取所有 Cookie
browser.getCookies()
  • browser.deleteCookies - 此方法用于从现有页面中删除 Cookie。如果此方法中提供了 Cookie 名称作为参数,则将删除该特定 Cookie。否则,将删除当前页面的所有 Cookie。

语法

//删除特定 Cookie
browser.deleteCookies(['Topic'])
或者,
//删除所有 Cookie
browser.deleteCookies()

示例

代码实现

// 测试套件名称
describe('Tutorialspoint application', function(){

   // 测试用例
   it('Cookies', function(){

      // 启动 URL
      browser.url('https://www.tutorialspoint.com/index.htm')
      // 设置 Cookie
      browser.setCookies([
          {name: 'topic1', value: 'WebdriverIO'},
          {name: 'topic2', value: 'Selenium'}
      ])

      //获取特定 Cookie
      const t = browser.getCookies(['topic1'])
      console.log(t);

      //获取所有 Cookie
      const a = browser.getCookies()
      console.log(a);

      //删除名为 topic2 的 Cookie
      browser.deleteCookies(['topic2'])
      d = browser.getCookies()
      console.log(d)

      //删除所有 Cookie
     browser.deleteCookies()
     m = browser.getCookies()
     console.log(m)
   });
});

相关文章