#html #json #if-statement #contains #karate
#HTML #json #if-оператор #содержит #каратэ
Вопрос:
Я делаю запрос, в котором ответ может быть возвращен либо в формате Json, либо в формате HTML.
Я пытаюсь написать условие, основанное на случае html, в котором, если ответ содержит строку «моя строка», затем вызовите другой функциональный файл. Я попытался прочитать документацию по условной логике и содержит, однако у меня все еще возникают проблемы.
Вот шаги, которые я предпринимаю:
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('<')
Теперь вы можете выполнять любые условные вызовы, какие захотите.