RepeatActionUntilViewState

public final class RepeatActionUntilViewState implements ViewAction


Enables performing a given action on a view until it reaches desired state matched by given View matcher. This action is useful in the scenarios where performing the action repeatedly on a view changes its state at runtime. For example, if there is a ViewFlipper on which user can swipe through the views and it automatically flips between each child at a regular interval, it is not always certain which of the child is displayed at a given point of time. In this case, in order to perform click on child no. 4 (assuming child no. 4 contains a text "Child 4"), repeat action can be used as follows:

int maxAttempts=10;
onView(withId(R.id.my_pager))
           .perform(repeatedlyUntil(swipeUp(), hasDescendant(withText("Child 4")), maxAttempts),
           click());

Summary

Protected constructors

RepeatActionUntilViewState(
    ViewAction action,
    Matcher<View> desiredStateMatcher,
    int maxAttempts
)

Public methods

Matcher<View>

A mechanism for ViewActions to specify what type of views they can operate on.

String

Returns a description of the view action.

void
perform(UiController uiController, View view)

Performs this action on the given view.

Protected constructors

RepeatActionUntilViewState

protected RepeatActionUntilViewState(
    ViewAction action,
    Matcher<View> desiredStateMatcher,
    int maxAttempts
)

Public methods

getConstraints

public Matcher<ViewgetConstraints()

A mechanism for ViewActions to specify what type of views they can operate on.

A ViewAction can demand that the view passed to perform meets certain constraints. For example it may want to ensure the view is already in the viewable physical screen of the device or is of a certain type.

Returns
Matcher<View>

a Matcher that will be tested prior to calling perform.

getDescription

public String getDescription()

Returns a description of the view action. The description should not be overly long and should fit nicely in a sentence like: "performing %description% action on view with id ..."

perform

public void perform(UiController uiController, View view)

Performs this action on the given view.

Parameters
UiController uiController

the controller to use to interact with the UI.

View view

the view to act upon. never null.