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