如何在Uiautomator中实现长按

时间:2014-01-29 13:30:06

标签: android button click ui-automation uiautomator

我正在尝试编写一个代码来以突发模式捕获图片。这需要在Capture按钮上长按(大约一分钟)。如何实现这一目标?

UiObject CameraButton = new UiObject(new UiSelector().text("Capture"));
        CameraButton.longClick();

longclick():按住按钮需要多长时间?是否可以使用时间戳执行长按。

4 个答案:

答案 0 :(得分:3)

使用 swipe(int startX,int startY,int endX,int endY,int steps)来执行长时间点击所需的时间。最后一个参数步骤确定时间。 For a 100 steps, the swipe will take about 1/2 second to complete.步骤的值越大,点击和释放的持续时间就越长。

UiObject CameraButton = new UiObject(new UiSelector().text("Capture"));
Rect CameraButton_rect = CameraButton.getBounds();
getUiDevice().swipe(CameraButton_rect.centerX(), CameraButton_rect.centerY(), CameraButton_rect.centerX(), CameraButton_rect.centerY(), 100);

答案 1 :(得分:0)

另一个选择是drag对象本身:

UiObject CameraButton = new UiObject(new UiSelector().text("Capture"));
CameraButton.dragTo(CameraButton, 10);

根据您想要的时间选择步骤。

答案 2 :(得分:0)

如果您使用的是UIAutomator2,则从版本v18:2.1.3开始 -
通过点击等待持续时间简化了长按点击处理。

 /** Performs a click on this object that lasts for {duration} milliseconds. */
    public void click(long duration)

希望这有助于某人!

答案 3 :(得分:0)

对于UIautomator 2.0,你应该这样试试:

BySelector selector = By.res("resourceID");
UiObject2 obj = mDevice.findObject(selector);
Point pot = obj.getVisibleCenter();
mDevice.swipe(pot.x, pot.y, pot.x, pot.y, 200);