select 带有 uiautomator 的旋转器元素

select a spinner element with uiautomator

我尝试了多种选择。都不适合我。是否可以使用 uiautomator select 微调器的一个元素?

代码示例:

UiObject spinner = mDevice.findObject(new UiSelector().className("android.widget.Spinner")
            .instance(0));

        try {
             Integer cnt = spinner.getChildCount();
             if (cnt > 0) {
                 UiObject item = spinner.getChild(new UiSelector().index(cnt-1));
                 item.click();
             }
        } catch (UiObjectNotFoundException e){}

此代码段将 select 来自 Spinner 的项目

    (new UiScrollable(new UiSelector().resourceId("com.dtmilano.android.demoapplication:id/spinner").index(1).packageName("com.dtmilano.android.demoapplication"))).click();
    List<UiObject2> children = mDevice.findObjects(By.res("android:id/text1").pkg("com.dtmilano.android.demoapplication"));
    for (UiObject2 uio2 : children) {
        if ("New Zealand".equals(uio2.getText())) {
            uio2.click();
            break;
        }
    }

它使用的示例 Activity 带有显示国家/地区的 Spinner

第一部分由Enumerate Children feature of CulebraTester自动生成。

一个可以select By.res,但是没有参数packageName(也就是android):

UiObject2 spinner = mDevice.findObject(By.res(packageName, "spinner"));
spinner.click();
sleep(2000);

List<UiObject2> items = mDevice.findObjects(By.res("android:id/text1"));
items.get(1).click(500);