mas*_*ter 5 java testing android android-uiautomator
我想用指定的时间长按指定的点.不幸的是,没有像在课堂上长按一样的方法:UiDevice 我可能会编写自己的方法,如下所示:
private void longClick(int x, int y, long time) {
android.graphics.Point point = new android.graphics.Point(x, y);
android.graphics.Point[] points = new android.graphics.Point[2];
points[0] = point;
points[1] = point;
getUiDevice().swipe(points, time / 5); // according to documentation, each step lasts 5ms
}
Run Code Online (Sandbox Code Playgroud)
或使用反射并调用longTap:
private void longClick(int x, int y) {
Field mUiAutomationBridgeField = getUiDevice().getClass().getDeclaredField("mUiAutomationBridge");
mUiAutomationBridgeField.setAccessible(true);
Object mUiAutomationBridge = mUiAutomationBridgeField.get(getUiDevice());
Field mInteractionControllerField = mUiAutomationBridge.getClass().getDeclaredField("mInteractionController");
mInteractionControllerField.setAccessible(true);
Object mInteractionController = mInteractionControllerField.get(mUiAutomationBridge);
Method longTap = mInteractionController.getClass().getDeclaredMethod("longTap", int.class, int.class);
longTap.setAccessible(true);
longTap.invoke(mInteractionController, x, y);
}
Run Code Online (Sandbox Code Playgroud)
然而,它不是满意的解决方案,任何想法如何做得更好的方式?他们为什么错过这种方法?
小智 5
getUiDevice().getInstance().swipe(x, y, x, y, 400);
Run Code Online (Sandbox Code Playgroud)
起点和终点相同.然后你可以模拟uiDevice longclick.
我认为滑动 UiObject 更好。
yourUiObject.swipeRight(int steps);
yourUiObject.swipeLeft(int steps);
yourUiObject.swipeDown(int steps);
yourUiObject.swipeUp(int steps);
Run Code Online (Sandbox Code Playgroud)
他们中的任何一个都对我很有帮助。请注意,文档说一步需要大约 5 毫秒,但我发现这不是真的。
| 归档时间: |
|
| 查看次数: |
4443 次 |
| 最近记录: |