【问题标题】:Karate UI - Maintain browser cookies/session/local storage variable value accorss different scnearios空手道 UI - 跨不同场景维护浏览器 cookie/会话/本地存储变量值
【发布时间】:2020-04-22 12:38:02
【问题描述】:

我正在测试我网站的各种组件,并且测试每个组件的先决条件是用户必须登录。当用户登录到网站时,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 中做类似的事情吗?任何指向正确方向的指针将不胜感激。

【问题讨论】:

    标签: karate


    【解决方案1】:

    是的,这是空手道的优势之一。您只需要知道要设置什么浏览器 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

    【讨论】:

    • 如果我正确理解了您的示例 "* def token = 'setByCallSingle'" 表示我正在调用一个将返回令牌的功能,然后我通过该令牌设置 cookie,这意味着我必须在每个功能文件中实现该代码。如何在 karate-config 中执行此操作,这样我就不必在每个功能中调用此令牌设置代码。我是否正确理解了您的示例?
    • @AtulChaudhary 我假设 a)您已经在使用 callSingle(您提到过),并且 b)如果您查看浏览器,它与作为 cookie 登陆的令牌相同。现在 - 您的问题是关于可重用代码的,您可以在 call 中拥有此代码,我假设您知道如何重用空手道中的功能。如果你真的想膨胀你的karate-config.js,你可以做karate.call()。有什么问题吗?
    • 我现在明白了,感谢您的解释。我很快就会试试这个
    • 嗨@Peter Thomas,我已经成功了。高级设计在 karate.config 我调用我的设置 cookie 功能,然后将 cookie 值存储在全局变量中。然后上面给出的示例代码就成功了。
    • 嗨@Atul Chaudhary 我也在寻找同样的解决方案。如果您能指导我如何实现 UI 自动化,您是否有可能。避免在一个功能文件中的每个场景之前重新登录。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    • 2017-10-07
    • 2014-10-06
    • 2012-03-08
    • 1970-01-01
    相关资源
    最近更新 更多