我正在为我的Android应用程序编写Instrumentation测试。我想做的一件事是找出所有UI组件是否都在屏幕上。为此我已经拍摄了完整屏幕的屏幕截图,然后我正在寻找该图像中的特定小部件。 此代码只能在设备上运行,而不是在桌面上运行。
E.g。全屏拍摄(图像-1)有各种Android组件,如textview,button,listview和图像。现在我有了这个图像的一个子集(图像-2),假设按钮的图像。
我怎样才能发现image-2是否是image-1的一部分?
答案 0 :(得分:2)
假设此代码是从应用程序内部发生的,那么图像比较似乎不是确定视图是否可见的最简单方法。
如果您正在编写某种外部仪器应用程序,并且此答案不适用,请告知我们。
以下是我要测试应用程序中是否存在UI元素的方法:
从the Android API docs on the View object:你可以通过在XML文件中设置的ID找到一个视图:
<Button
android:id="@+id/my_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/my_button_text"/>
在App中:
Button myButton = (Button) findViewById(R.id.my_button);
然后,检查getVisibility()
和getGlobalVisibleRect (Rect r, Point globalOffset)
,两者都记录在查看文档页面上。
伪代码:
int[] viewIds = {<known ids from xml>};
foreach(int viewId in viewIds) {
View v = findViewById(viewId);
if (v!=null) {
bool isVisible = (v.getVisibility()==VISIBLE) && getGlobalVisibleRect(new Rect(), new Point());
// do something with the visible/invisible info
}
}