2017-06-23 5 views
0

Ich versuche, Uiautomator zu verwenden, um meine Anwendungsberechtigungen in Anwendungsdetails mit Google's sample app zu widerrufen. Es kam jedoch zu dem Problem, dass mein uiautomator anscheinend den falschen Status von toggle bekommt. Wenn der Schalter aktiviert ist, gibt der iiautomator aus bestimmten Gründen immer noch false zurück.uiautomator klicken/widerrufen Anwendungserlaubnisliste

Mein Endziel ist es, die Tasten nacheinander aus den gleichen Layouts mit unterschiedlichen Indexen zu schalten.

enter image description here

@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(); 
     } 
    } 
} 

Irgendwelche Ideen?

Antwort

0

Index basiert auf seiner übergeordneten, kann nicht so verwendet werden. Sie können den Schalter mit der Instanzeigenschaft direkt finden.

mDevice.findObject(new UiSelector().className(android.widget.Switch.class.getName()).instance(index)); 
Verwandte Themen