我在使用Google的uiautomator方面有一定经验,但是当涉及到将小部件添加到手机主屏幕时,我似乎遇到了难题。现在我们先简单地假设要添加小部件的屏幕为空。思路应该是打开应用抽屉 > 点击小部件选项卡 > 找到要添加的小部件 > 长按并拖动小部件到主屏幕上。然而,似乎小部件不支持“长按”。欢迎提出任何想法/建议/解决方案。下面是我实现的代码。
@Override
protected void setUp() throws UiObjectNotFoundException {
getUiDevice().pressHome();
new UiObject(new UiSelector().className(TEXT_VIEW).description("Apps")).clickAndWaitForNewWindow();
new UiObject(new UiSelector().className(TEXT_VIEW).text("Widgets")).click();
UiScrollable widgets = new UiScrollable(new UiSelector().scrollable(true));
widgets.setAsHorizontalList();
widgets.flingToEnd(MAX_SWIPES);
UiObject widget = widgets.getChildByText(
new UiSelector().className(TEXT_VIEW).resourceId("com.android.launcher:id/widget_name"),
WIDGET_NAME
);
// Returns true
System.out.println("exists(): " + widget.exists());
// Returns false...
System.out.println("longClickable(): " + widget.isLongClickable());
widget.longClick();
// Also tried...
int startX = sonosWidget.getVisibleBounds().centerX();
int startY = sonosWidget.getVisibleBounds().centerY();
getUiDevice().drag(startX, startY, 0, 0, 3);
}