空手道 - 条件 if 并且包含何时响应可以是 json 或 html

Posted

技术标签:

【中文标题】空手道 - 条件 if 并且包含何时响应可以是 json 或 html【英文标题】:Karate - Conditional if and contains when response can be either json or html 【发布时间】:2021-01-11 06:06:54 【问题描述】:

我正在提出一个请求,其中响应可以作为 Json 或 html 返回。

我正在尝试基于 html 案例编写一个条件,其中如果响应包含字符串“我的字符串”,则调用另一个功能文件。我已经尝试阅读conditional logic 和contains 上的文档,但是我仍然遇到问题。

以下是我正在采取的步骤:

Given url 'someUrl'
When method get
Then status 200

#响应可以返回一个类似这样的json对象:

* def jsonResponse=
"""

  "del_date_range": "new Object",
  "twoday_date": null,
  "sameday": null,
  "calendar_end_day": 23,
  "zip_error_message_id": null

"""

# 响应可以返回这个 HTML:

* def htmlResponse=
"""
<span class="text">
    <p>my string</p>
</span>
"""

# 现在我想创建一个 if 条件来说明响应是否包含字符串“我的字符串”,然后调用另一个功能文件。

我想做这样的事情,但这不起作用:

 * if (response contains 'my string') karate.call('calledFeature.feature')

我会收到这样的错误:

javax.script.ScriptException: <eval>:1:13 Expected ) but found contains

实现这一目标的最佳方法是什么?如果返回 Json 对象 -> 什么也不做。如果返回 html -> 调用其他功能文件。提前谢谢。

【问题讨论】:

【参考方案1】:

给你:

* string temp = response
* def isHtml = temp.startsWith('<')

现在您可以进行任何类型的条件调用。

【讨论】:

以上是关于空手道 - 条件 if 并且包含何时响应可以是 json 或 html的主要内容,如果未能解决你的问题,请参考以下文章

如何检测 XHR 何时返回缓存的资源?

空手道-如何使用从响应数组接收的值循环Soap请求

是否可以在条件语句中使用空手道“匹配”?

不知道如何在空手道中验证响应?

在空手道框架中实施摘要认证时面临问题;响应:缺少强制摘要值

是否可以通过同一空手道命令行上的标签包含和排除