Espresso has the GeneralClickAction
, this is the underlying implementation of ViewActions click()
, doubleClick()
, and longClick()
.
The GeneralClickAction
's constructor takes a CoordinatesProvider
as second argument.
So the basic idea is to create a static ViewAction
getter which provides a custom CoordinatesProvider
. Something like this:
public static ViewAction clickXY(final int x, final int y){
return new GeneralClickAction(
Tap.SINGLE,
new CoordinatesProvider() {
@Override
public float[] calculateCoordinates(View view) {
final int[] screenPos = new int[2];
view.getLocationOnScreen(screenPos);
final float screenX = screenPos[0] + x;
final float screenY = screenPos[1] + y;
float[] coordinates = {screenX, screenY};
return coordinates;
}
},
Press.FINGER);
}
A general advice with Espresso: instead of looking for documentation (there's virtually none), look at the source code. Espresso is open source and the source code itself is of really good quality.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…