Implement if condition for xpath that does not exist Karate
I'm working with xml response body and trying to keep my test running even when my xpath does not exist. Here is my feature file
When request read("propertyAvail.xml")
And header CWT_DEBUG_LABELS = true
And header CWT_DEBUG_RATES_RANK_LABELS = true
And header Content-Type = "text/xml"
And header CWT_TRAVELER_ID = "A:65887F3"
And header CWT_TRAVELER_ID_TYPE = "portrait"
And method post
Then match response //BookingChannel[2]/RatePlan[1]/TPA_Extensions/InPolicy == "#notnull"
And def inPol = //BookingChannel[2]/RatePlan[1]/TPA_Extensions/InPolicy
And def inPolVal = //BookingChannel[2]/RatePlan[1]/TPA_Extensions/Labels/Label[@Type="CWT_INPOLICY_VALUE"]
And def rateIsInPolicy = Java.type("com.cwt.karate_scripts.CalculationHelper").isInPolicy(inPol, inPolVal)
And match rateIsInPolicy == true
Here I want to implement the logic
if (//BookingChannel[2]/RatePlan[1]/TPA_Extensions/InPolicy -> does not exist){
And def inPolVal = 0.0
And def rateIsInPolicy = Java.type("com.cwt.karate_scripts.CalculationHelper").isInPolicy(inPol, inPolVal)
And match rateIsInPolicy == true
else{
And def inPolVal = //BookingChannel[2]/RatePlan[1]/TPA_Extensions/Labels/Label[@Type="CWT_INPOLICY_VALUE"]
And def rateIsInPolicy = Java.type("com.cwt.karate_scripts.CalculationHelper").isInPolicy(inPol, inPolVal)
And match rateIsInPolicy == true
So I want stay in same feature, same scenario, and keep my test running even if xpath does not exist and do some actions after that. How can I do so? Maybe there is try-catch logic present within karate as well? Please help.
karate
add a comment |
I'm working with xml response body and trying to keep my test running even when my xpath does not exist. Here is my feature file
When request read("propertyAvail.xml")
And header CWT_DEBUG_LABELS = true
And header CWT_DEBUG_RATES_RANK_LABELS = true
And header Content-Type = "text/xml"
And header CWT_TRAVELER_ID = "A:65887F3"
And header CWT_TRAVELER_ID_TYPE = "portrait"
And method post
Then match response //BookingChannel[2]/RatePlan[1]/TPA_Extensions/InPolicy == "#notnull"
And def inPol = //BookingChannel[2]/RatePlan[1]/TPA_Extensions/InPolicy
And def inPolVal = //BookingChannel[2]/RatePlan[1]/TPA_Extensions/Labels/Label[@Type="CWT_INPOLICY_VALUE"]
And def rateIsInPolicy = Java.type("com.cwt.karate_scripts.CalculationHelper").isInPolicy(inPol, inPolVal)
And match rateIsInPolicy == true
Here I want to implement the logic
if (//BookingChannel[2]/RatePlan[1]/TPA_Extensions/InPolicy -> does not exist){
And def inPolVal = 0.0
And def rateIsInPolicy = Java.type("com.cwt.karate_scripts.CalculationHelper").isInPolicy(inPol, inPolVal)
And match rateIsInPolicy == true
else{
And def inPolVal = //BookingChannel[2]/RatePlan[1]/TPA_Extensions/Labels/Label[@Type="CWT_INPOLICY_VALUE"]
And def rateIsInPolicy = Java.type("com.cwt.karate_scripts.CalculationHelper").isInPolicy(inPol, inPolVal)
And match rateIsInPolicy == true
So I want stay in same feature, same scenario, and keep my test running even if xpath does not exist and do some actions after that. How can I do so? Maybe there is try-catch logic present within karate as well? Please help.
karate
I just left a comment on previous one, can we consider it as closed?
– mirchik
Nov 22 '18 at 16:33
I accepted the answer
– mirchik
Nov 23 '18 at 19:00
add a comment |
I'm working with xml response body and trying to keep my test running even when my xpath does not exist. Here is my feature file
When request read("propertyAvail.xml")
And header CWT_DEBUG_LABELS = true
And header CWT_DEBUG_RATES_RANK_LABELS = true
And header Content-Type = "text/xml"
And header CWT_TRAVELER_ID = "A:65887F3"
And header CWT_TRAVELER_ID_TYPE = "portrait"
And method post
Then match response //BookingChannel[2]/RatePlan[1]/TPA_Extensions/InPolicy == "#notnull"
And def inPol = //BookingChannel[2]/RatePlan[1]/TPA_Extensions/InPolicy
And def inPolVal = //BookingChannel[2]/RatePlan[1]/TPA_Extensions/Labels/Label[@Type="CWT_INPOLICY_VALUE"]
And def rateIsInPolicy = Java.type("com.cwt.karate_scripts.CalculationHelper").isInPolicy(inPol, inPolVal)
And match rateIsInPolicy == true
Here I want to implement the logic
if (//BookingChannel[2]/RatePlan[1]/TPA_Extensions/InPolicy -> does not exist){
And def inPolVal = 0.0
And def rateIsInPolicy = Java.type("com.cwt.karate_scripts.CalculationHelper").isInPolicy(inPol, inPolVal)
And match rateIsInPolicy == true
else{
And def inPolVal = //BookingChannel[2]/RatePlan[1]/TPA_Extensions/Labels/Label[@Type="CWT_INPOLICY_VALUE"]
And def rateIsInPolicy = Java.type("com.cwt.karate_scripts.CalculationHelper").isInPolicy(inPol, inPolVal)
And match rateIsInPolicy == true
So I want stay in same feature, same scenario, and keep my test running even if xpath does not exist and do some actions after that. How can I do so? Maybe there is try-catch logic present within karate as well? Please help.
karate
I'm working with xml response body and trying to keep my test running even when my xpath does not exist. Here is my feature file
When request read("propertyAvail.xml")
And header CWT_DEBUG_LABELS = true
And header CWT_DEBUG_RATES_RANK_LABELS = true
And header Content-Type = "text/xml"
And header CWT_TRAVELER_ID = "A:65887F3"
And header CWT_TRAVELER_ID_TYPE = "portrait"
And method post
Then match response //BookingChannel[2]/RatePlan[1]/TPA_Extensions/InPolicy == "#notnull"
And def inPol = //BookingChannel[2]/RatePlan[1]/TPA_Extensions/InPolicy
And def inPolVal = //BookingChannel[2]/RatePlan[1]/TPA_Extensions/Labels/Label[@Type="CWT_INPOLICY_VALUE"]
And def rateIsInPolicy = Java.type("com.cwt.karate_scripts.CalculationHelper").isInPolicy(inPol, inPolVal)
And match rateIsInPolicy == true
Here I want to implement the logic
if (//BookingChannel[2]/RatePlan[1]/TPA_Extensions/InPolicy -> does not exist){
And def inPolVal = 0.0
And def rateIsInPolicy = Java.type("com.cwt.karate_scripts.CalculationHelper").isInPolicy(inPol, inPolVal)
And match rateIsInPolicy == true
else{
And def inPolVal = //BookingChannel[2]/RatePlan[1]/TPA_Extensions/Labels/Label[@Type="CWT_INPOLICY_VALUE"]
And def rateIsInPolicy = Java.type("com.cwt.karate_scripts.CalculationHelper").isInPolicy(inPol, inPolVal)
And match rateIsInPolicy == true
So I want stay in same feature, same scenario, and keep my test running even if xpath does not exist and do some actions after that. How can I do so? Maybe there is try-catch logic present within karate as well? Please help.
karate
karate
asked Nov 20 '18 at 20:36
mirchikmirchik
154
154
I just left a comment on previous one, can we consider it as closed?
– mirchik
Nov 22 '18 at 16:33
I accepted the answer
– mirchik
Nov 23 '18 at 19:00
add a comment |
I just left a comment on previous one, can we consider it as closed?
– mirchik
Nov 22 '18 at 16:33
I accepted the answer
– mirchik
Nov 23 '18 at 19:00
I just left a comment on previous one, can we consider it as closed?
– mirchik
Nov 22 '18 at 16:33
I just left a comment on previous one, can we consider it as closed?
– mirchik
Nov 22 '18 at 16:33
I accepted the answer
– mirchik
Nov 23 '18 at 19:00
I accepted the answer
– mirchik
Nov 23 '18 at 19:00
add a comment |
1 Answer
1
active
oldest
votes
The karate.get()
API will gracefully return null if an XPath does not exist. So this works:
* def xml1 = <root><one>1</one></root>
* def temp = karate.get('$xml1/root/one')
* def result = temp ? 'yes' : 'no'
* match result == 'yes'
* def xml2 = <root><two>2</two></root>
* def temp = karate.get('$xml2/root/one')
* def result = temp ? 'yes' : 'no'
* match result == 'no'
Now just use the techniques in the docs on conditional logic and you should be able to do what you want. One more thing, there is nothing wrong with calling a second (re-usable) feature file, it can make things simpler in some cases.
1
Works perfectly. Thanks for your help and quick response!
– mirchik
Nov 26 '18 at 17:02
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53401115%2fimplement-if-condition-for-xpath-that-does-not-exist-karate%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
The karate.get()
API will gracefully return null if an XPath does not exist. So this works:
* def xml1 = <root><one>1</one></root>
* def temp = karate.get('$xml1/root/one')
* def result = temp ? 'yes' : 'no'
* match result == 'yes'
* def xml2 = <root><two>2</two></root>
* def temp = karate.get('$xml2/root/one')
* def result = temp ? 'yes' : 'no'
* match result == 'no'
Now just use the techniques in the docs on conditional logic and you should be able to do what you want. One more thing, there is nothing wrong with calling a second (re-usable) feature file, it can make things simpler in some cases.
1
Works perfectly. Thanks for your help and quick response!
– mirchik
Nov 26 '18 at 17:02
add a comment |
The karate.get()
API will gracefully return null if an XPath does not exist. So this works:
* def xml1 = <root><one>1</one></root>
* def temp = karate.get('$xml1/root/one')
* def result = temp ? 'yes' : 'no'
* match result == 'yes'
* def xml2 = <root><two>2</two></root>
* def temp = karate.get('$xml2/root/one')
* def result = temp ? 'yes' : 'no'
* match result == 'no'
Now just use the techniques in the docs on conditional logic and you should be able to do what you want. One more thing, there is nothing wrong with calling a second (re-usable) feature file, it can make things simpler in some cases.
1
Works perfectly. Thanks for your help and quick response!
– mirchik
Nov 26 '18 at 17:02
add a comment |
The karate.get()
API will gracefully return null if an XPath does not exist. So this works:
* def xml1 = <root><one>1</one></root>
* def temp = karate.get('$xml1/root/one')
* def result = temp ? 'yes' : 'no'
* match result == 'yes'
* def xml2 = <root><two>2</two></root>
* def temp = karate.get('$xml2/root/one')
* def result = temp ? 'yes' : 'no'
* match result == 'no'
Now just use the techniques in the docs on conditional logic and you should be able to do what you want. One more thing, there is nothing wrong with calling a second (re-usable) feature file, it can make things simpler in some cases.
The karate.get()
API will gracefully return null if an XPath does not exist. So this works:
* def xml1 = <root><one>1</one></root>
* def temp = karate.get('$xml1/root/one')
* def result = temp ? 'yes' : 'no'
* match result == 'yes'
* def xml2 = <root><two>2</two></root>
* def temp = karate.get('$xml2/root/one')
* def result = temp ? 'yes' : 'no'
* match result == 'no'
Now just use the techniques in the docs on conditional logic and you should be able to do what you want. One more thing, there is nothing wrong with calling a second (re-usable) feature file, it can make things simpler in some cases.
answered Nov 24 '18 at 4:31
Peter ThomasPeter Thomas
14.8k31847
14.8k31847
1
Works perfectly. Thanks for your help and quick response!
– mirchik
Nov 26 '18 at 17:02
add a comment |
1
Works perfectly. Thanks for your help and quick response!
– mirchik
Nov 26 '18 at 17:02
1
1
Works perfectly. Thanks for your help and quick response!
– mirchik
Nov 26 '18 at 17:02
Works perfectly. Thanks for your help and quick response!
– mirchik
Nov 26 '18 at 17:02
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53401115%2fimplement-if-condition-for-xpath-that-does-not-exist-karate%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
I just left a comment on previous one, can we consider it as closed?
– mirchik
Nov 22 '18 at 16:33
I accepted the answer
– mirchik
Nov 23 '18 at 19:00