Android 机器人-检测屏幕外的物体

Android 机器人-检测屏幕外的物体,android,robotium,Android,Robotium,所以我上周对我的Android应用程序做了一个改动,无意中把一些按钮画到了屏幕外面 我可以在Eclipse中看到屏幕外的对象,没有抛出错误,但当应用程序运行时,按钮不可见(屏幕外) 只是想知道Robotium是否会捕捉到这一点,或者按钮是否仍然可以“按下” 我的问题是,考虑到上述场景,我运行一个Robotium测试来选择一个不再在屏幕内绘制/可见的按钮。Robotium是否仍然能够选择按钮并通过测试,还是会因为按钮不再在屏幕上而失败?据我所知,如果按钮被绘制,即使它们不可见,您也可以按下按钮。例

所以我上周对我的Android应用程序做了一个改动,无意中把一些按钮画到了屏幕外面

我可以在Eclipse中看到屏幕外的对象,没有抛出错误,但当应用程序运行时,按钮不可见(屏幕外)

只是想知道Robotium是否会捕捉到这一点,或者按钮是否仍然可以“按下”


我的问题是,考虑到上述场景,我运行一个Robotium测试来选择一个不再在屏幕内绘制/可见的按钮。Robotium是否仍然能够选择按钮并通过测试,还是会因为按钮不再在屏幕上而失败?

据我所知,如果按钮被绘制,即使它们不可见,您也可以按下按钮。例如,您可以在只有某些部分可见的滚动视图中按下按钮。robotium最重要的一点是,它可以在当前活动的视图中找到您要单击的按钮(它以某种方式在内部遍历视图并在其所有子窗口小部件中搜索窗口小部件)。

robotium可以将按钮按出屏幕,但取决于您搜索按钮的方式,它可能会或不会找到按钮。困惑是吧


Robotium有时会在返回视图之前在内部检查视图的可见性,例如,当您请求所有按钮时,但如果您使用不同的技术或findById(),则它实际上不会执行相同的检查。但是,您可以使用robotium内部的可见性检查来验证它是否可见

可见性

visibility选项由如下代码段断言。请注意,getVisibility将返回一个从0=可见到8=消失的整数,其中4=不可见。更多信息请访问

屏幕上的位置

可见性并不总是足以检查屏幕上是否有可见的内容。某些东西在离开屏幕或以负宽度绘制时可以看到。以验证您是否可以使用。它将返回屏幕上视图的x和y坐标(按该顺序)。例如:

int] location = new int[2]; // this will hold the x and y position
// retrieve coordinates
solo.getView(your.project.package.R.id.someViewId).getLocationOnScreen(location);
// and check if possitive or whatever fits your needs
assertTrue("Message when assert failed", location[0] >= 0 && location[1] >= 0);

这将正确地检测屏幕外的按钮

如果您尝试单击屏幕上未绘制/可见的按钮,Robotium将无法通过测试用例

好的,那么我需要写检查,看看按钮x,y坐标是否在屏幕范围内,然后?
int] location = new int[2]; // this will hold the x and y position
// retrieve coordinates
solo.getView(your.project.package.R.id.someViewId).getLocationOnScreen(location);
// and check if possitive or whatever fits your needs
assertTrue("Message when assert failed", location[0] >= 0 && location[1] >= 0);