Karate UI-根据不同的scnearios维护浏览器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

最新更新