標籤:
UiObject可以理解為控制項的對象,主要對對象進行操作。按照一定條件(UiSelector)擷取UiObject對象,之後對對象進行相應的操作,如所示。
對於對象的操作主要有點擊/長按、拖動/滑動、文本輸入與清除、屬性、對象是否存在、手勢操作等。
點擊與長按方面的方法:
舉例:UiObject ok = new UiObject(new UiSelector().text("OK"));//聲明對象
ok.click();//點擊"OK" text.
1.public boolean click() 點擊對象
2.public boolean clickAndWaitForNewWindow(long timeout) 點擊對象,等待新視窗出現,參數為等待逾時時間長度
3.public boolean clickAndWaitForNewWindows() 點擊對象,等待新視窗出現
4.public boolean clickBottomRight() 點擊對象的右下角
5.public boolean clickTopLeft() 點擊對象的左上方
6.public boolean longClick() 長按對象
7.public boolean longClickBottomRight() 長按對象的右下角
8.public bolean longClickTopLeft() 長按對象的左上方
拖拽與滑動方面的方法:
舉例:UiObject answerCall = new UiObject(new UiSelector().textStartWith("右滑接聽"));
answerCall.swipeRight(10);
1.public boolean dragTo(UiObject destObj, int steps)
拖拽對象到另一個對象上,步長可設定拖動的速度,步長越小,拖動速度越快。
2.public boolean dragTo(int deskX, int deskY, int steps)
拖拽對象到螢幕某個座標位置上,步長可設定拖動速度
3.public boolean swipeDown(int steps)
拖動對象往下滑
4.public boolean swipeLeft(int steps)
拖動對象往左滑
5.public boolean swipeRight(int steps)
拖動對象往右滑
6.public boolean swipeUp(int steps)
拖動對象往上滑
輸入文本與清除文本方面的操作:
舉例:UiObject inputMessage = new UiObject(new UiSeletor().text("Please inout message content"));
inputMessage.setText("Message Test") //在簡訊編輯框中輸入常值內容
UiObject clearMessage = new UiObject(new UiSelector().text("Message Test"));
clearMessage.clearTextField(); //輸入完後清除簡訊編輯框常值內容
1.public boolean setText(String text) 在對象中輸入文本
2.public boolean clearTextField() 清除編輯框文本
擷取對象屬性方面的方法:
舉例:UiObject getTextObject = new UiObject(new UiSelector().className(android.widget.TextView)) //擷取第一個textView
String textrString = getTextObject.getText(); //獲得textView的文本
1. public rect getBounds()
擷取對象矩形座標,矩形座標左上方與右下角座標。
2.public UiObject getChild(UiSelector selector)
擷取對象的子類對象,可以遞迴擷取子孫當中的某個對象
3.public int getChildCount()
獲得下一級子類的數量
4.public String getClassName()
獲得對象類名屬性的類名文本
5.public String getContentDescription()
獲得對象的描述屬性的描述文本
6.public UiObject getFromParent(UiSelector selector)
從父類擷取子類,按照uiselector擷取兄弟類
7. public String getPackageName()
擷取對象包名屬性的包名檔案
8.public final UiSelector getSelector()
擷取selector用於調試
9.public String getText()
擷取對象的文字屬性中的文本
屬性判斷方面的方法:
舉例:UiObject inpputTextObject = new UiObject(new UiSelector().className("android.widget.Switch")); //聲明開關對象
if(inputTextObject.isChecked())
{
inputTextObject.click(); //如果開關是開,則點擊關閉。
}
1.public boolean isCheckable() 檢查對象的checkable屬性是否為true
2.public boolean isChecked() 檢查對象的checked屬性是否為true
3.public boolean isClickable() 檢查對象的clickable屬性是否為true
4.public boolean isEnabled() 檢查對象的enable屬性是否為true
5.public boolean isFocusable() 檢查對象的focusable屬性是否為true
6.public boolean isLongClickable() 檢查對象的longClickable屬性是否為true
7.public boolean isScrollable() 檢查對象的scrollable屬性是否為true
8.public boolean isSelected() 檢查對象的selected屬性是否為true
手勢操作方面的方法:
舉例:
UiObject framObject = new UiObject(new UiSelector().className("android.widget.FrameLayout"));
PointerCoords p = new PointerCoords();
p.x = 500;
p.y= 500;
p.pressure = 1;
p.size = 1;
PointerCoords p1 = new PointerCoords();
p1.x = 600;
p1.y= 600;
p1.pressure = 1;
p1.size = 1;
PointerCoords p2 = new PointerCoords();
p2.x = 500;
p2.y=500;
p2.pressure = 1;
p2.size = 1;
frameObject.performMultiPointerGesture(p,p1,p2);
1.public boolean performTwoPointerGesture(Point staretPoint1, Point statsPoint2, Point endPoint1, Point endPoint2, int steps)
執行任意兩個手指觸控手勢,類比兩個手指手勢
2.public boolean pinchIn(int precent, int steps)
手勢操作,兩點向內收縮
3.public boolean pinchOut(int percent, int steps)
手勢操作,兩點向外張開
4.public boolean performMultiPointerGesture(PointerCoords... touches)
執行單手指觸手勢,可定義任意手勢與形狀
判斷對象是否存在、是否出現與是否消失方面的方法:
舉例:
Runtime.getRuntime().exec(am start -n com.android.calculator2/com.android.calculator2.Calculator); // 開啟電腦
UiObject addObject = new UiObject(new UiSelector().text("+)); //電腦介面"+"對象
addObject.waitForExists(10000);
總結:
1.聲明UiOject對象後,不管對象存不存在都不會有問題---先聲明對象,後操作;
2.當對象可能出現可能不出現的時候,需要對對象進行判斷;
此部落格參考文檔:
http://wenku.baidu.com/view/4e242fb9680203d8ce2f24f6.html?re=view
1.public boolean waitForExist(long timeout) 等待對象出現
2.public boolean waitUntilGone(long timeout) 等待對象消失
3.public boolean exists() 檢查對象是否存在
Android自動化測試Uiautomator--UiObject介面簡介