日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

腾讯Android自动化测试实战3.3.2 ListView列表遍历

發布時間:2025/3/20 Android 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 腾讯Android自动化测试实战3.3.2 ListView列表遍历 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

3.3.2 ListView列表遍歷

編寫Android端的自動化測試用例,最常見的控件有ListView,而要想測試ListView,就必然要涉及ListView的遍歷。

關于ListView的遍歷,可能首先想到的是類似如代碼清單3-20的實現方式。

代碼清單3-20 設想中的列表遍歷

for(int i=0;i<listView. getCount();i++){

??? listView.getChildAt(int index);

??? ……;

}

但是,在Android中,對于listView.getChildAt(int index)而言,如果子控件是在屏幕之外的話,那么是無法點擊的,因此要想點擊或測試屏幕之外的子控件,就需要不斷向上滑動。因此我們可以先遍歷當前屏幕內的子控件,然后翻一屏,再遍歷屏幕內的子控件,如此反復就可以遍歷ListView所有的子控件了。

對于ListView而言,通過getFirstVisiblePosition()和getLastVisiblePosition()可以獲取ListView在屏幕中第一個可見子控件及最后一個可見子控件在列表中的位置。當遍歷至當前最后一個子控件時,通過solo.scrollListToLine(listView, lastPosition)方法將列表滑至lastPosition所在的位置,即實現翻屏的效果。當遍歷至每個child子控件時,可以通過該子控件的布局結構來判斷該子控件是否為要查找的控件。另外,需要注意的是,正如前文所介紹的,scrollListToLine(listView, lastPosition)方法并不會直接產生上滑手勢,因此如果列表需要產生上滑動作才能加載更多的話,則還需要配合使用drag方法進行上拉加載更多。

如代碼清單3-21所示,遍歷列表,查找列表中子節點為RelativeLayout且子節點的標題為×××的子控件。

代碼清單3-21 遍歷列表并找到指定標題的child

public RelativeLayout findCardByType(int maxCount) {

??? // 獲取當前界面中的ListView

??? ListView listView = getCurrentListView();

??? int firstPosition = 0;

??? int lastPosition = 0;

??? RelativeLayout relativeLayout = null;

??? int currentPosition = 1;

??? labelAll:

??? for (int i = 0; i < length; i++) {

??????? firstPosition = listView.getFirstVisiblePosition();

??????? lastPosition = listView.getLastVisiblePosition();

??????? for (int j = 1; j <= lastPosition - firstPosition; j++) {

??????????? currentPosition++;

??????????? if (currentPosition >= maxCount) {

??????????????? break labelAll;

??????????? }

??????????? // 判斷該節點是否為relativeLayout

??????????? if (listView.getChildAt(j) instanceof RelativeLayout) {

??????????????? relativeLayout = (RelativeLayout) listView.getChildAt(j);

??????????????? // 這里可以對該relativeLayount進行判斷,例如獲取該//relativeLayout中的子控件,如果有標題則判斷標題等

??????????????? if (isSatisfied(relativeLayout)) {

?????? ?????????????break labelAll;

??????????????? }

??????????????? relativeLayout = null;

??????????? }

??????? }

??????? solo.scrollListToLine(listView, lastPosition);

??????? if (lastPosition >= listView.getCount()) {

??????????? // 當需要上拉加載更多時,調用drag實現的方法進行上拉加載更多

??????????? dragUpToShowAll(listView);

??????? }

??????? sleeper.sleep();

??? }

??? sleeper.sleep();

??? return relativeLayout;

}

總結

以上是生活随笔為你收集整理的腾讯Android自动化测试实战3.3.2 ListView列表遍历的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。