Retries
Retry Methods
The Retry
class has several methods to handle retrying operations. Below you can find information describing those methods:
Method
Exception On Timeout
Returns
Retries Until
void Do(Action target)
Yes
-
No Exception
is raised
bool TryDo(Func<T> target)
No
True
if successful; False
otherwise
No Exception
is raised
T Do(Func<T> target)
Yes
Passed target
result
No Exception
is raised
void DoUntil(Func<bool> target)
Yes
-
No Exception
is raised & Passed target
returns True
bool TryDoUntil(Func<bool> target)
No
True
if successful; False
otherwise
No Exception
is raised & Passed target
returns True
T DoUntil(Func<T> target, Func<T, bool> validation)
Yes
Passed target
result
No Exception
is raised & Passed validation
returns True
Examples
Ensuring a control is clicked.
// Some errors can be raised when clicking a control if,
// for example, it is not visible at the time.
Retry.Do(() => this.MyPageObject.MyControl.Click());
Ensuring a control contained by a
ControlCollection
is found and clicked.
// This action would normally throw an exception on certain scenarios.
// For example, if the collection does not contain the searched control
// or the control is found but not immediately clickable.
Retry.Do(() => this.MyPageObject.MyControlCollection.Controls
.First(control => control.Text == "Item 1").Click());
Ensuring a control is clicked and then validating that the action is affected.
// Creating a local function that clicks "MyControl" and then validates the result of
// the operation.
bool ClickMyControlAndValidate()
{
this.MyPageObject.MyControl.Click();
return this.MyPageObject.MyLabel.Text == "MyControl has been clicked");
}
Retry.DoUntil(ClickMyControlAndValidate);
Looking for a control that might or not be present depending on the application state.
if (Retry.TryDoUntil(() => this.MyPageObject.MyControl.Displayed))
{
// Additional actions to be executed if "MyControl" is found AND is displayed.
}
// Continue normal execution.
Last updated
Was this helpful?