2

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

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

谢谢。

4

3 回答 3

3

获得意见

是的,您可以将 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() 返回当前显示在焦点活动或对话框中的视图对象的 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

于 2013-05-29T20:37:59.657 回答
2

您可以从当前 Activity 中获取所有 R.id 和视图文本,例如:

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);
    }
}
于 2013-05-29T20:56:26.197 回答
0

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

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

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

PS。稍后我将使用屏幕截图更新答案。

于 2015-11-30T10:38:21.160 回答