0

ロボティウムを使用して奇妙な問題に直面しています。使用するsolo.getCurrentViews()と、画面にビューが表示されます。しかし、ビューが読み込まれていると思われるいくつかのアクティビティでは、画面にビューが表示されず、非表示になっており、表示するためにいくつかのユーザー操作が必要です。たとえば、Amazon のホーム画面で商品リストをスクロールする必要がありますが、最初の画面には 3 つの商品しか表示されません。ただし、solo.getCurrentViews()すべての製品ビューをロードします。画面に表示されている 3 つのテキスト ビュー以外の TextView をクリックすると、エラーが発生してアプリケーションが終了します。だから、テキストビューが現在画面に表示されているかどうかをどうにかして調べる必要があると思います。これは、すべてのビュー オブジェクトに当てはまります。Robotium はすべてのビューをロードしますが、現在表示されていないビューをクリックするとエラーが発生します。

4

3 に答える 3

1

はすべてのSolo.getCurrentViews()ビューを返します。以下を使用RobotiumUtils.removeInvisibleViews(solo.getCurrentViews())できます。表示されるビューをフィルタリングするために。

または、次のコードを使用して、表示されている TextViews を自分でフィルター処理できます。

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

すべてのビューをそのクラス (または android.view クラス!) にキャストしてから、その「VISIBLE」プロパティを確認できます。

TextView の場合:

TextView tv = (TextView) solo.getCurrentViews().get(i);
int visible = tv.VISIBLE;

0 - 画面に表示されます。デフォルト値。
1 - 表示されませんが、レイアウト時に考慮されます (そのためのスペースが残されています)。
2 - ビューが追加されていないかのように、完全に非表示。

すべてのコントロールに対して同じことを行います。

于 2013-09-27T13:31:08.043 に答える