Uiautomator-如何在textview obj上获取复选框值的文本值?

时间:2015-06-15 19:10:17

标签: android uiautomator

我正在尝试使用带有(ischecked == true)属性的复选框获取linearlayaout的textview值。基本上试图获取所有选中相应复选框的项目的文本。

->ListView
   -> LinearLayout
       -> Checkbox
       -> textview
       -> textview

我尝试了以下操作:

     UiScrollable citylistView = new UiScrollable(new UiSelector());
     listView.setMaxSearchSwipes(100);
     listView.scrollTextIntoView(name);
     listView.waitForExists(5000);
     UiObject listViewItem = listView.getChildByText(new UiSelector()
        .className(android.widget.CheckBox.ischecked(true));
     String cityName =listViewItem.gettext();

但这似乎不起作用。 如果有人能指出我做错了什么,我真的很感激。 谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

您的代码存在一些问题:

  • 第一行的选择器将匹配任何元素。这可能不是你想要的。另外,基于接下来的几行,citylistView应为listView
  • 第5-6行不会编译。 UiSelector.className(..)方法采用String或Class对象,因此它应该是.className("android.widget.CheckBox").className(android.widget.CheckBox.class)

  • 同样在第6行,您在调用isChecked(true)之前错过了一个右括号。而不是.className(android.widget.CheckBox.ischecked(true))它应该是.className(android.widget.CheckBox.class).ischecked(true)

答案 1 :(得分:0)

从我能看到的是

.className(android.widget.CheckBox.ischecked(true));

不正确,因为该函数需要一个字符串。我想你需要像这样重写它。

UiObject checkBox = listView.getChildByText(new UiSelector()
    .className("android.widget.CheckBox");
if(checkBox.isSelected()){
   String cityName = listView.getChildByText(new UiSelector()
    .className("android.widget.TextView").gettext();
}

如果我是正确的,这应该有助于你的解决方案,这对于截面和xml的屏幕截图很有用,更容易知道它是如何直接布局的。不幸的是我无法测试这个解决方案,但我希望它有所帮助。