我在使用机器人时遇到了一个奇怪的问题,当我使用时,solo.getCurrentViews()
我会在屏幕上看到视图。但是对于一些认为视图已加载的活动,我看不到屏幕上的视图,它们是隐藏的,需要一些用户操作来显示它们。例如,在亚马逊主屏幕中,我必须滚动浏览产品列表,初始屏幕中只显示 3 个产品。但solo.getCurrentViews()
加载所有产品视图。现在,如果说我单击除了屏幕上显示的三个文本视图之外的 TextViews,我会收到错误并且应用程序退出。所以,我想我必须以某种方式检查 textview 当前是否在屏幕上可见。这适用于所有视图对象。Robotium 会加载所有视图,但单击当前不可见的视图会导致错误。
问问题
842 次
3 回答
1
将Solo.getCurrentViews()
返回所有视图。您可以使用:RobotiumUtils.removeInvisibleViews(solo.getCurrentViews())
过滤可见视图。
或者您可以使用以下代码自行过滤可见的 TextView。
public ArrayList<TextView> getFilteredTextViews()
{
ArrayList<TextView> textViewList = solo.getCurrentViews(TextView.class);
ArrayList<TextView> filteredTextViewList = new ArrayList<TextView>();
for (TextView textview : textViewList ) {
if (textview != null && textview.isShown())
{
filteredTextViewList .add(view);
}
}
return filteredTextViewList;
}
于 2013-12-12T03:59:48.660 回答
0
只是想让你知道,我通过使用 view.isShown() 方法检查解决了这个问题。
于 2013-09-27T23:21:29.013 回答
0
您可以将每个视图转换为它的类(或 android.view 类!),然后检查它的“VISIBLE”属性。
对于文本视图:
TextView tv = (TextView) solo.getCurrentViews().get(i);
int visible = tv.VISIBLE;
0 - 在屏幕上可见;默认值。
1 - 不显示,但在布局时考虑(留有空间)。
2 - 完全隐藏,就好像没有添加视图一样。
对所有控件执行相同操作。
于 2013-09-27T13:31:08.043 回答