karate - 空手道 UI - 根据不同的场景维护浏览器 cookie/会话/本地存储变量值
问题描述
我正在测试我的网站的各种组件,并测试每个组件的先决条件是用户必须登录。当用户登录到网站时,Web 服务器会在浏览器中创建 cookie,然后允许用户访问这些组件/页面. 现在要测试每个组件,为此我正在编写几个场景,我每次都在场景中编写登录代码,因为每当我的场景开始使用以下行时
@tag
Feature: User List
I want to use this template for my user list
@tag1
Scenario: Login failure error when wrong credentials
Given driver 'https://mywebsite.com/login'
When input("input[name='session[username_or_email]']", 'hello')
When input("input[name='session[password]']", ['asasas', Key.ENTER], 100)
When click('div[role=button]')
Then match html('#user-list') contains 'User Details'
#THEN REST OF THE UI TEST
我必须在每个功能文件中重复该登录代码,以便我可以测试页面的其余部分。我的要求是,当我运行登录功能时,我必须在执行下一个场景时存储并保留 cookie。如何在不一次又一次调用登录功能或登录代码的情况下做到这一点?
使用空手道核心,我在空手道配置中使用了空手道单调用功能,它允许我设置在后续请求中使用的 HTTP 标头和 cookie,因此这不是问题。我可以在空手道 UI 中做类似的事情吗?任何指向正确方向的指针将不胜感激。
解决方案
是的,这是空手道的优势之一。您只需要知道要设置什么浏览器cookie。例如,您可以通过查看 Chrome 开发人员工具来解决这个问题。
然后,这是模式:
* def token = 'setByCallSingle'
* driver 'about:blank'
* cookie({ name: 'my_token', value: token, domain: '.mycompany.com' })
* driver baseUrl + '/home'
我试图更新文档以使其更清晰:https ://github.com/intuit/karate/tree/develop/karate-core#cookieset
推荐阅读
- stackdriver - 使用 Stackdriver 在 Grafana 中显示 GCP 计算实例数?
- tableau-api - Tableau Prep 计算字段从 Q4 YTD 中减去 Q3 YTD 得到 Q4 QTD
- jvm - 对于 JVM 字段描述符,为什么使用 Z 表示布尔值,L 表示类的实例,而 J 表示长?
- html - 如何在我的 CSS 样式定义中排除没有子菜单的项目?
- excel - Excel公式查找文本中的所有文本
- spring-boot - 如何创建用于签署 JWT 令牌的 Spring 安全密钥?
- jekyll - 如何使用 jekyll 处理 md 文件中的标头?
- javascript - 搜索过滤器上的 jquery - 换行
- html - 如何选择具有共享基类和附加类的元素的子元素?
- php - Google Chart Area 不显示 mysql 数据库