本人在使用UiAutomator作測試的時候,遇到一些控件須要長按一下子,好比錄音功能,須要按住幾秒,官方api不太好用,因此本身寫了一個長按的方法。分享以下,供你們參考。java
/* * 根據resourceid獲取控件並長按 * / public void longclickUiObectByResourceId(String id) throws UiObjectNotFoundException { int x = getUiObjectByResourceId(id).getBounds().centerX(); int y = getUiObjectByResourceId(id).getBounds().centerY(); UiDevice.getInstance().swipe(x, y, x, y, 300);//最後一個參數單位是5ms } /* * 根據文本獲取控件並長按 * / public void longclickUiObectByText(String text) throws UiObjectNotFoundException { int x = getUiObjectByText(text).getBounds().centerX(); int y = getUiObjectByText(text).getBounds().centerY(); UiDevice.getInstance().swipe(x, y, x, y, 300);//最後一個參數單位是5ms } /* * 根據座標並長按 * / public void longclickUiObectByText(int x, int y) throws UiObjectNotFoundException { UiDevice.getInstance().swipe(x, y, x, y, 300);//最後一個參數單位是5ms }
文章寫做時間較早了,UiAutomator1基礎的API進行封裝的,還能夠封裝幾個根據classname、index、或者description均可以,這裏就不一一寫了,最重要的最後一個,不經常使用可是頗有用,根據座標點進行長按。還有一個根據座標的數組進行軌跡的描繪,請參考android uiautomator一個畫心形圖案的方法--代碼的浪漫android