【问题标题】:select a spinner element with uiautomator使用 uiautomator 选择微调器元素
【发布时间】:2017-02-11 03:17:06
【问题描述】:

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

代码示例:

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){}

【问题讨论】:

标签: android ui-automation android-uiautomator


【解决方案1】:

这个 sn-p 将从 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;
        }
    }

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

第一部分由CulebraTesterEnumerate Children功能自动生成。

【讨论】:

  • 谢谢 Diego,你知道如果 UIObject2 不存在会发生什么吗?与 UIObject 不同,它没有 exist() 方法
  • 抛出异常
【解决方案2】:

可以选择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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多