如何在當前界面中查找第一個ListView中的帶有文本屬性為Apps的子控件。
UiObjectappItem=newUiObject(newUiSelector() .className(" android.widget.ListView").instance(1) .childSelector(newUiSelector().text("Apps"))); |
如何查找當前顯示界面中的取消按鈕和確認按鈕:
UiObjectcancelButton=newUiObject(newUiSelector().text("Cancel"));
UiObjectokButton=newUiObject(newUiSelector().text("OK"));
查找到的UiObject實例可以在其他
測試代碼中重用。需要注意的是:每次使用UiObject做操作的時候uiautomator都會在當前屏幕重新查找該控件。
如下代碼uiautomator工具在當前界面查找文本內容為“OK”的控件。如果存在并且可用則模擬用戶點擊該控件。
if(okButton.exists()&&okButton.isEnabled()) { okButton.click(); } |
還可以限制僅僅查找特定類型的控件。例如如下代碼只查找文本為“Cancel”和“OK”的android.widget.Button類型控件。
UiObjectcancelButton=newUiObject(newUiSelector().text("Cancel") .className("android.widget.Button")); UiObjectokButton=newUiObject(newUiSelector().text("OK") .className("android.widget.Button")); UiCollection |
代表控件的集合。獲取UiCollection的方式和UiObject一樣,通過UiSelector查找。UiCollection對應Android系統中的ViewGroup以及子控件。
如下代碼演示如何通過UiSelector來獲取包含視頻集合的UiCollection。
UiCollectionvideos=newUiCollection(newUiSelector()
.className("android.widget.FrameLayout"));
如果每個視頻是放到LinearLayout中的,則可以通過如下方式獲取視頻的數目:
intcount=videos.getChildCount(newUiSelector()
.className("android.widget.LinearLayout"));
如果需要查找標簽為“CuteBabyLaughing”的視頻,并點擊。則可以通過如下方式:
UiObjectvideo=videos.getChildByText(newUiSelector() .className("android.widget.LinearLayout"),"CuteBabyLaughing"); video.click(); |
同樣還可以模擬其他用戶操作。例如,模擬選擇視頻的操作如下:
UiObjectcheckBox=video.getChild(newUiSelector() .className("android.widget.Checkbox")); if(!checkBox.isSelected())checkbox.click(); UiScrollable |
代表可滾動的控件??梢杂肬iScrollable來模擬水平或者垂直滾動的UI元素。如果需要操作的元素在屏幕外需要滾動屏幕才能看到的情況下需要使用UiScrollable。
例如,下面的代碼顯示了如何模擬滾動到“Settings”菜單并點擊“Abouttablet”菜單的操作。
UiScrollablesettingsItem=newUiScrollable(newUiSelector() .className("android.widget.ListView")); UiObjectabout=settingsItem.getChildByText(newUiSelector() .className("android.widget.LinearLayout"),"Abouttablet"); about.click() |