I have an Iteration which checks for Values (Error Messages) on a popup window
Now the error messages will be thrown all on the same step (site) in the workflow, except in one single case it will be thrown on another (earlier) step. I would like to avoid writing a recording for this single problem, but would rather like to implement a function which checks on this specific site if the error message appears or not.
Meaning:
1. Step
2. Step
3. Step (here I would like to check if the error message is showing up, if yes validate it and ignore the next steps... and continue with the next Testcase in the CSV)
4. Step
5. Step (normal validation)
I do have a variable in my CSV which tells me if a validation shows up in Step 3, so this can be checked. But I do not know how I could ignore the next steps, set the iteration to passed / failed and continue with the iteration.
Any idea?
Ignore Steps
Re: Ignore Steps
Are you using recordings only or are do you have any user code implemented?
If you have user code and are comfortable writing your own code you only really need to add an If statement that checks the message appears and if so do A else do B.
If you have user code and are comfortable writing your own code you only really need to add an If statement that checks the message appears and if so do A else do B.
If this or any response has helped you, please reply to the thread stating that it worked so other people with a similar issue will know how you fixed your issue!
Ciege...
Ciege...
Re: Ignore Steps
I do have user code implemented, but no clue how to ignore the next steps
would a Report.Successful do that?
would a Report.Successful do that?
Re: Ignore Steps
Well, can you share your part of code that looks for the message? That way I can help tailor my response to your particular scenario.
In general terms, when you search for the error message, I assume using a FindSingle for the message form, you can check if the Ranorex.Form value is null. If it is null then the form was not found, if the Ranorex.Form has a value then the message form was found.
In general terms, when you search for the error message, I assume using a FindSingle for the message form, you can check if the Ranorex.Form value is null. If it is null then the form was not found, if the Ranorex.Form has a value then the message form was found.
If this or any response has helped you, please reply to the thread stating that it worked so other people with a similar issue will know how you fixed your issue!
Ciege...
Ciege...
Re: Ignore Steps
I have a usermethod called validatePersonError which I do call when the iteration is on that step
Variables:
checkpoint (contains the location where the error get's thrown, e.g "Person", "Services")
s_errormessage (contains the expected errormessage)
I hope it is enough clear what I mean.
Variables:
checkpoint (contains the location where the error get's thrown, e.g "Person", "Services")
s_errormessage (contains the expected errormessage)
Code: Select all
public void validatePersonError()
{
if (checkpoint.equals("Person"))
{
// This routine validates the given error message on the popup and closes the popup
// If the validation fails, the next iteration will be started
Helper.validateError.validateMessage(s_errormessage);
// Now if this point has been reached, this means the validation was successfull and here I would
// like to force this testcase to be finished successfully and go ahead with the next iteration
}
}
I hope it is enough clear what I mean.
Re: Ignore Steps
So you can change your method from void to bool and return a result back to the method caller. Then the method caller can test that result and determine if it should continue with the next step or not.
I made some pseudo code changes below to help you on your way.
I made some pseudo code changes below to help you on your way.
Code: Select all
//From your main method call the validation method
bool boolResult = validatePersonError();
//Then test the result of the validation method and react accordingly
if boolResult = true
Do A
else
Do B
public bool validatePersonError()
{
if (checkpoint.equals("Person"))
{
// This routine validates the given error message on the popup and closes the popup
// If the validation fails, the next iteration will be started
Helper.validateError.validateMessage(s_errormessage);
// Now if this point has been reached, this means the validation was successfull and here I would
// like to force this testcase to be finished successfully and go ahead with the next iteration
HERE -> If helper = pass return true else return false
}
}
If this or any response has helped you, please reply to the thread stating that it worked so other people with a similar issue will know how you fixed your issue!
Ciege...
Ciege...
Re: Ignore Steps
Okay got that
What I am looking for is exactely the thing you called "Do A" or "Do B"
How do I force a test to be finished, like kind of a Testcase.finish ?
What I am looking for is exactely the thing you called "Do A" or "Do B"
How do I force a test to be finished, like kind of a Testcase.finish ?
Re: Ignore Steps
If you steps are called from the Main method you can just Return from Main and the code will exit.
Code: Select all
static void Main(string[] args)
{
boolResult = StartTest1()
If boolResult = false
return
boolResult = StartTest2()
If boolResult = false
return
boolResult = StartTest3()
If boolResult = false
return
etc...
}
public bool StartTest1 ()
{
bool boolResult = validatePersonError();
if boolResult = true
return true
else
return false
}
If this or any response has helped you, please reply to the thread stating that it worked so other people with a similar issue will know how you fixed your issue!
Ciege...
Ciege...
Re: Ignore Steps
Okay I see what you mean
So but do you know the command which just stops the actual testcase?
I do have only some steps as usercode, the rest is in the recording itself. I would need to change the testcase so everything is in user code, then this would be quite easy to handle...
But if I could force it only with a command I would prefer this solution
So but do you know the command which just stops the actual testcase?
I do have only some steps as usercode, the rest is in the recording itself. I would need to change the testcase so everything is in user code, then this would be quite easy to handle...
But if I could force it only with a command I would prefer this solution
Re: Ignore Steps
Okay I solved it by keeping the recording, but calling one single user code
In this user code I do call the other steps and handle it with an if statement... not the way I wanted it to have, but the way it works
In this user code I do call the other steps and handle it with an if statement... not the way I wanted it to have, but the way it works

Re: Ignore Steps
Well, you got it to work, thats good!
All of my automation is custom code. I don't use the recorder at all. It has far more flexibility that way, but is also a bit more difficult to get everything up and running initially.
My suggestion is to eventually move as much as you can out of record/playback and into custom user code. It releases you from any limitations that are set by using the record/playback system.
Good luck!
All of my automation is custom code. I don't use the recorder at all. It has far more flexibility that way, but is also a bit more difficult to get everything up and running initially.
My suggestion is to eventually move as much as you can out of record/playback and into custom user code. It releases you from any limitations that are set by using the record/playback system.
Good luck!
If this or any response has helped you, please reply to the thread stating that it worked so other people with a similar issue will know how you fixed your issue!
Ciege...
Ciege...