Jus*_*pez 5 automation android android-uiautomator
我在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);
}
Run Code Online (Sandbox Code Playgroud)
在 uiautomator Android 中长按也可以使用以下命令执行:
public boolean drag (int startX, int startY, int endX, int endY, int steps)
Run Code Online (Sandbox Code Playgroud)
执行从一个坐标到另一坐标的滑动。您可以通过指定步数来控制滑动的平滑度和速度。每个步骤的执行时间被限制为 5 毫秒,因此对于 100 个步骤,滑动将需要大约 0.5 秒才能完成。
参数:
startX :: 起始坐标的 X 轴值
startY :: 起始坐标的 Y 轴值
endX :: 结束坐标的 X 轴值
endY :: 结束坐标的 Y 轴值
Steps :: 是滑动操作的步数。
返回:
如果执行滑动,则为 true;如果操作失败或坐标无效,则为 false。
自从 :
Android API 级别 18
所以给出 (startX,startY) = (endX,endY) 。这相当于长按。
| 归档时间: |
|
| 查看次数: |
2522 次 |
| 最近记录: |