2013-07-15 40 views
1

我正在使用Robotium自动执行应用程序,在输入凭证后,进度条出现在屏幕上。在这里我面临一个挑战,因为进度条不是一个活动,所以我不能使用solo.waitForDailogToClose()方法。如何使用Robotiium处理进度条

请让我知道如何检测和处理这个进度条。我正在使用solo.sleep,但是如果进度条需要超过指定时间,那么在tearDown方法中,它不会关闭应用程序并挂起我的下一个测试执行。

感谢, 马里兰州阿什法克

回答

0

这应该解决您的问题:

do { 
    solo.sleep(1000); 
} while(!solo.getCurrentViews(ProgressBar.class).isEmpty()); 
0

试试这个:

private boolean progressBarVisible() { 
    if (mSolo.getCurrentViews(ProgressBar.class).isEmpty()) { 
     return false; 
    } 
    ArrayList<ProgressBar> barView = mSolo.getCurrentViews(ProgressBar.class); 
    for (ProgressBar elt : barView) { 
     if (elt.isIndeterminate()) { 
      if (Config.DEBUG) { 
       return false; 
      } else { 
       Log.d(TAG, "still visible "); 
       Log.d(TAG, "not indeterminate "); 
      } 
     } 

    } 
    return true; 
} 
0

你登录后试试这个代码。

while(!solo.waitForView(ProgressBar.class,1,1000)) 
{ 
} 

此循环将继续,直到进度栏变为不可见为止。此外,您可以定义任何标准并使用break语句退出循环。