我正在尝试使用uiautomator使用Google's sample app撤消应用程序详细信息中的应用程序权限。但是,我遇到了问题,我的uiautomator似乎得到了错误的切换状态。检查切换时,由于某些原因,uiautomator仍会返回false
。
我的最终目标是从具有不同索引的相同布局逐个切换按钮。
@Test
public void clickThruSettings() throws UiObjectNotFoundException {
// go to the target page and open the permissions list.
Context context = InstrumentationRegistry.getContext();
final Intent intent = new Intent();
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
Uri uri = Uri.fromParts("package", BASIC_SAMPLE_PACKAGE, null);
intent.setData(uri);
context.startActivity(intent);
UiObject permissions = mDevice.findObject(new UiSelector().text("Permissions"));
permissions.clickAndWaitForNewWindow();
// toggle on and off with index for linearLayout.
togglePermissionButton(true,0);
togglePermissionButton(false,1);
togglePermissionButton(true,2);
togglePermissionButton(false,3);
}
private void togglePermissionButton(boolean enabled, int index) throws UiObjectNotFoundException {
UiObject permissionButton = mDevice.findObject(new UiSelector().className("android.widget.LinearLayout")
.scrollable(false).index(index)).getChild(new UiSelector().className(android.widget.Switch.class
.getName()));
if (permissionButton.waitForExists(2000)&& permissionButton.exists()&& permissionButton.isEnabled()) {
if (permissionButton.isChecked() != enabled) {
permissionButton.click();
}
}
}
有什么想法吗?
答案 0 :(得分:1)
索引是基于它的父级,不能像这样使用。 你可以直接找到带有实例属性的开关。
mDevice.findObject(new UiSelector().className(android.widget.Switch.class.getName()).instance(index));