¿Cómo hacer clic en la pantalla para especificar la posición en uiautomator?
Primero, puedes usar flingForward() en lugar de arrastrar, pero tu control debe ser UiScrollable
Segundo, anula Swipe
extras\android\m2repository com\android\support\test\uiautomator\uiautomator-v18\2.1.2 (uiautomator-v18-2.1.2-sources.jar)! (android/support/test\uiautomator\ InteractionController.java
deslizamiento booleano público (int downX, int downY, int upX, int upY, int pasos, arrastre booleano) {
booleano ret = false;
int swipeSteps = pasos;
double xStep = 0;
double yStep = 0;
// evitar Dividir por cero
if(swipeSteps == 0)
swipeSteps = 1;
xStep = ((double)(arribaX - abajoX))/ swipeSteps;
yStep = ((double)(upY - downY))/ swipeSteps;
// El primer toque comienza exactamente en el punto solicitado
ret = touchDown (abajoX, abajoY);
If (arrastrar)
SystemClock.sleep(mUiAutomatorBridge.getSystemLongPress(mUiAutomatorBridge.getSystemLongPress(mUiAutomatorBridge.getSystemLongPress))getSystemLongPressTime());
for(int i = 1; i < swipeSteps; i++) {
ret &= touchMove(abajoX + (int)(xPaso * i), abajoY + (int)(yPaso * i) );
if (arrastrar)
SystemClock.sleep(mUiAutomatorBridge. i));
if (ret == false)
break;
// Establece un retraso constante conocido entre pasos; de lo contrario,
// dependerá completamente de la velocidad del sistema,
// Los resultados pueden variar en diferentes dispositivos. Esto al menos asegura que tenemos
// un retraso preestablecido. p>
ret &= touchUp(upX, upY);
return(ret);
}
En SystemClock.sleep (REGULAR_CLICK_LENGTH) Reemplace REGULAR_CLICK_LENGTH en esta línea.
a mUiAutomatorBridge.getSystemLongPressTime()
No he probado el segundo método, pero es teóricamente posible
.