【问题标题】:Robotium: is there a way to list the labels / ids for all elements on a screen / activity?Robotium:有没有办法列出屏幕/活动上所有元素的标签/ID?
【发布时间】:2013-05-29 20:34:36
【问题描述】:

相当不言自明。假设我有一个登录屏幕,但我不知道开发人员(我是 QA)将用户名和密码文本字段命名为什么。鉴于我们的应用程序中有数百个这样的字段,我不想每次需要这些信息时都烦他。

有没有办法以编程方式列出活动屏幕上所有元素的标签或 ID?

谢谢。

【问题讨论】:

  • 您无权访问源代码?

标签: java android automation robotium


【解决方案1】:

获得观看次数

是的,您可以将 solo.getCurrentViews() 用于该方法或任何更具体的方法。从 api 看:

http://www.jarvana.com/jarvana/view/com/jayway/android/robotium/robotium-solo/3.1/robotium-solo-3.1-javadoc.jar!/com/jayway/android/robotium/solo/Solo.html#getCurrentViews()

编辑:找到最新的文档:http://robotium.googlecode.com/svn/doc/index.html

获取当前视图

public ArrayList getCurrentViews() 返回一个 当前显示在焦点 Activity 中的 View 对象的 ArrayList 或对话框。返回: 当前显示的 View 对象的 ArrayList 在焦点窗口中

迭代视图(完整代码示例)

for( View v : solo.getCurrentViews()){
   // do something with the View object here 
   int viewId = v.getId();
}

http://developer.android.com/reference/android/view/View.html

【讨论】:

  • 为什么要推荐1.5年的版本?现在有robotium 4.1:code.google.com/p/robotium/downloads/list
  • 天真的问题...我如何列出它们?我试过了,但不好:ArrayList<View> arr = solo.getCurrentViews(); ... System.out.println(arr.toString());
  • @maszter 你说得有道理,我只是用谷歌搜索“solo robotium api”来获取我面前的 api,所以我可以在这里复制一些链接。从来没注意过版本。虽然找不到任何在线发布的最新版本的 api 文档。完成后,请随时编辑我的答案。
  • @AaronS 您需要迭代数组列表。查看更新的答案。
  • @hcpl 好吧,是的,但是我该怎么办呢? :-) 所以我做for (View v : arr) 然后呢?我需要找到要打印出来的 id 或标签或一些东西,以帮助我能够与视图交互...
【解决方案2】:

你可以从当前的Activity中获取所有的R.ids和视图文本,例如这样:

ArrayList<View> views = solo.getCurrentViews();
for (View v : views) {
    if (v.getId() != View.NO_ID) {
        String id = v.getResources().getResourceName(v.getId()).replaceAll(":id/", ".R.id.");
        Log.d("DEBUG", id);
    }
    if (v instanceof TextView) {
        String text = ((TextView)v).getText().toString();
        Log.d("DEBUG", text);
    }
}

【讨论】:

【解决方案3】:

uiautomatorviewer 是列出所有出现在 android 屏幕中的 id 和文本的最佳工具。

1.直接进入你的android-sdk/tools,你可以在那里找到它。

2.只需打开元素所在的屏幕,然后单击uiautomatorviewer中的快照按钮。您可以在此特定屏幕中查看元素的所有 id。

PS。稍后我会用截图更新答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-01
    • 1970-01-01
    • 2015-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-19
    相关资源
    最近更新 更多