我使用robotium時遇到了一個奇怪的問題,當我使用solo.getCurrentViews()
時,我在屏幕上看到了視圖。但對於一些認爲視圖已加載的活動,我無法在屏幕上看到視圖,它們是隱藏的,需要用戶執行一些操作才能顯示它們。例如,在亞馬遜主屏幕中,我必須滾動瀏覽產品列表,在初始屏幕中只顯示3種產品。但是solo.getCurrentViews()
加載了所有產品視圖。現在,如果我點擊屏幕上顯示的三個文本視圖之外的其他TextView,我會看到一個錯誤,並且應用程序退出。所以,我想我必須以某種方式檢查textview是否在屏幕上顯示。這適用於所有視圖對象。 Robotium加載所有視圖,但單擊當前不可見的視圖會導致錯誤。無法使用robotium與屏幕中的所有文本視圖進行交互
0
A
回答
0
您可以將每個視圖都投射到其類(或android.view類!),然後檢查其「VISIBLE」屬性。
對於TextView的:
TextView tv = (TextView) solo.getCurrentViews().get(i);
int visible = tv.VISIBLE;
0 - 可見在屏幕上;默認值。
1 - 未顯示,但在佈局過程中將其考慮在內(剩餘空間)。
2 - 完全隱藏,好像視圖尚未添加。
對所有控件執行相同操作。
0
只是想讓你知道,我通過使用view.isShown()方法檢查來解決問題。
1
Solo.getCurrentViews()
將返回所有視圖。 您可以使用:RobotiumUtils.removeInvisibleViews(solo.getCurrentViews())
來過濾可見視圖。
或者您可以使用以下代碼自行篩選可見的TextView。
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;
}
相關問題
- 1. 無法與片段活動中的視圖進行交互
- 2. 無法與.class文件進行交互
- 3. 用戶無法與Seekbar進行交互
- 4. 使用Robotium進行Android測試 - OpenGL屏幕截圖
- 5. 無法在android上使用robotium和私有方法拍屏幕截圖
- 6. 無法與UIStepper進行交互
- 7. 如何與使用presentViewController顯示的視圖進行交互?
- 8. 無法與使用jquery的jquery加載按鈕進行交互
- 9. 使用容器視圖修復所有屏幕的視圖
- 10. Framelayout,與其他視圖下的視圖進行交互
- 11. Python終端調用無法與文件進行交互
- 12. UIPearchBar與UIPopoverController持有結果無法與UIPopoverController在屏幕上交互
- 13. 如何與屏幕上沒有UITextView的iPhone鍵盤進行交互?
- 14. 無法與CoordinatorLayout中的地圖視圖交互
- 15. 如何與AppDelegate中的特定視圖進行交互?
- 16. 使用Robotium進行數據庫交易
- 17. Android:與屏幕交互鎖定按鈕
- 18. 使用OSMDroid中的地圖與道路進行交互?
- 19. 交互式主屏幕圖標
- 20. Flex無法與itemrenderer中的按鈕進行交互
- 21. 爲什麼我無法與iframe中的元素進行交互?
- 22. 執行方法時無法與wpf元素進行交互
- 23. 如何在下圖中對齊所有屏幕的文本視圖
- 24. 使用jQuery AJAX與marklog進行交互
- 25. 使用C#與Windows Update進行交互
- 26. 使用pywin32與Excel進行交互
- 27. 使用jQuery與Alchemy.js進行交互SVG
- 28. 無法通過iOS5中的HTML5視頻與內容進行交互
- 29. 與沒有MFC的CMutex進行交互
- 30. 使用Robotium關閉啓動屏幕
感謝您的回答,我用視圖對象的isShown()屬性解決了它。 –