Android自動化測試Uiautomator--UiObject介面簡介

來源:互聯網
上載者:User

標籤:

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介面簡介

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.