1. 程式人生 > >Android UI 自動化測試之UiObject

Android UI 自動化測試之UiObject

  1. UiObject 類介紹
    代表一個元件物件,物件有許多模擬實際操作手機的方法與屬性
  2. 點選與長按物件
    (1)元件區域位置關係
    這裡寫圖片描述
    (2)點選長按相關 api

這裡寫圖片描述


    public void testClick() throws UiObjectNotFoundException{
        UiObject clock=new UiObject(new UiSelector()
        .resourceId("com.android.deskclock:id/analog_appwidget"));      
        //clock.click();
        //clock.clickAndWaitForNewWindow();
// clock.clickBottomRight(); // sleep(3000); // UiDevice.getInstance().pressBack(); // sleep(1000); // clock.clickTopLeft(); // sleep(3000); // UiDevice.getInstance().pressBack(); // sleep(1000); //longclick //clock.longClick(); UiDevice.getInstance().swipe(533, 612
, 535, 615, 500); }
  1. 拖拽與滑動文字
    (1)拖動元件示意圖
    這裡寫圖片描述
    (2)拖拽文字相關 api
    這裡寫圖片描述
    public void testDrag() throws UiObjectNotFoundException{
//      UiObject object1=new UiObject(new UiSelector().text("聯絡人"));
//      UiObject object2=new UiObject(new UiSelector().text("相簿"));
//      //object1.dragTo(350,1704-500, 10);
//      //object1.dragTo(object2, 30);
// object1.swipeUp(5); UiObject recent=new UiObject(new UiSelector() .resourceId("com.android.systemui:id/app_thumbnail_image")); recent.swipeLeft(10); }
  1. 輸入文字與清除文字
    (1)輸入文字相關 API
    這裡寫圖片描述
public void testSetText() throws UiObjectNotFoundException{
//      UiObject edit=new UiObject(new UiSelector()
//      .resourceId("com.android.mms:id/embedded_text_editor"));
//      
//      edit.setText("qwertyuiop");
//      sleep(2000);
//      edit.clearTextField();

        //接收者
        UiObject r=new UiObject(new UiSelector()
        .resourceId("com.android.mms:id/recipients_editor"));
        UiObject w=new UiObject(new UiSelector().text("接收者"));
        r.setText("kkkkkkkkkkkkk");
        //將游標移動到行尾,使用backspace進行刪除
        UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_MOVE_END);
        while(!w.exists()){
        UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_DEL);
        }
        //將游標移動到行首,使用delete鍵來刪除

    }

(2)輸入文字與清除文字實現步驟說明
輸入文字:清除文字—輸入文字
清除文字:長按一鍵刪除
5. 獲取物件的屬性與屬性的判斷
(1)獲取物件的屬性
這裡寫圖片描述

public void testGet() throws UiObjectNotFoundException{
        UiObject r=new UiObject(new UiSelector()
        .resourceId("com.android.mms:id/recipients_editor"));

        String rec=r.getText();

        System.out.println("HINT:"+rec);
        System.out.println("CLASS:"+r.getClassName());
        System.out.println("PACKAGE_Name:"+r.getPackageName());
        System.out.println("PACKAGE_Name:"+r.getPackageName());
        System.out.println("DESC:"+r.getContentDescription());
        System.out.println("RECT:"+r.getBounds().left);
        assertEquals("接收者", rec);

    }

(2)獲取父類與子類節點
這裡寫圖片描述

public void testNode() throws UiObjectNotFoundException{
        UiObject down=new UiObject(new UiSelector()
        .resourceId("com.cyanogenmod.filemanager:id/navigation_view_details_item")
        .index(3));

//      UiObject download=down.getChild(new UiSelector()
//      .resourceId("com.cyanogenmod.filemanager:id/navigation_view_item_name"));
//      
//      download.click();

        UiObject music=down.getFromParent(new UiSelector()
        .resourceId("com.cyanogenmod.filemanager:id/navigation_view_details_item").index(5));

        music.click();


    }

(3)屬性的判斷
這裡寫圖片描述

public void testIs() throws UiObjectNotFoundException{
       UiObject wlan=new UiObject(new UiSelector()
       .resourceId("com.android.settings:id/switchWidget"));

       if(!wlan.isChecked()){
         wlan.click();  
       }


    }
  1. 手勢的操作
    (1) 手勢相關操作
    這裡寫圖片描述
    (2)手勢相關操作 API
    這裡寫圖片描述
public void testGesture() throws UiObjectNotFoundException{
    UiObject object=new UiObject(new UiSelector()
    .resourceId("com.android.gallery3d:id/photopage_bottom_controls"));

    //object.pinchIn(80, 20);
    //object.pinchOut(80, 20);

    Point startPoint1, startPoint2, endPoint1, endPoint2;
    startPoint1=new Point();
    startPoint2=new Point();
    endPoint1=new Point();
    endPoint2=new Point();

    startPoint1.x=157;startPoint1.y=183;
    startPoint2.x=122;startPoint2.y=455;

    endPoint1.x=948;endPoint1.y=195;
    endPoint2.x=930;endPoint2.y=493;

    object.performTwoPointerGesture(startPoint1, startPoint2, endPoint1, endPoint2, 50);


}
  1. 判斷物件是否存在
    相關 API
    這裡寫圖片描述
public void testExist() throws UiObjectNotFoundException{
      UiObject l=new UiObject(new UiSelector().text("聯絡人"));
      if(l.exists()){
          l.click();
      }
      UiObject create=new UiObject(new UiSelector().text("建立新聯絡人"));
      if(create.waitForExists(5000)){
          System.out.println("沒有任何聯絡人,需要建立");
          create.click();
          //建立步驟。。。。
      }
  }

相關推薦

Android UI 自動化測試UiObject

UiObject 類介紹 代表一個元件物件,物件有許多模擬實際操作手機的方法與屬性 點選與長按物件 (1)元件區域位置關係 (2)點選長按相關 api public void testClick() throws UiObjectN

UI自動化測試selenium(1)——selenium中的常用api

selenium api 目錄 1 對瀏覽器操作1.1 用webdriver打開一個瀏覽器1.2 最大化瀏覽器&關閉瀏覽器1.3 設置瀏覽器窗口大小1.4 打開測試頁面1.5 處理瀏覽器彈出的新窗口2 頁面元素定位3 如何對頁面元素進行操作3.1 WebElement相關方法3.2 iFram

UI自動化測試Jenkins配置

前一段時間幫助團隊搭建了UI自動化環境,這裡將Jenkins環境的一些配置分享給大家。 背景: 團隊下半年的目標之一是實現自動化測試,這裡要吐槽一下,之前開發的測試平臺了,最初的目的是用來做介面自動化測試和效能測試,但由於各種原因,介面自動化測試那部分功能整個廢棄掉了,其中和易用性有很大關係,另外,也和我

WEB UI自動化測試AutoMagic自動化測試平臺開源

作者介紹:網名: Ray介紹:笑起來像個孩子,冷起來是個迷。部落格:http://www.cnblogs.com/tsbc/2018年3月29日,Ray說準備把AutoMagic自動化測試管理平臺開源了!!!這是個好訊息,因為AutoMagic在其所在的企業中實踐應用,沉澱了

Espresso:快速的Android UI自動化測試

在我和很多Android開發者聊天的時候,我注意到他們在開發的過程中並不注重測試這一環節,原因是他們認為Android測試太難實現,或者難以整合到現有的工程中等等。但是實際上寫一個 Espresso並不是一件很難的事情,而且它能夠非常方便地整合到你的工程之中。 容易實現

Android UI自動化測試最佳實踐

轉載地址:http://qa.baidu.com/blog/?p=985 一. 概述 Android系統測試和Web的測試類似,有兩類自動化的方式:錄製回放與基於頁面元素操作的手工開發。由於錄製回放在長期維護與程式碼重用方面存在問題,這裡主要的方式還是後者,這也是Web

前端自動化測試UI Recorder(一、介紹)

而且 行為 文件上傳 語言 系統 nod clas 調用 開發 UI Recorder是一款零成本的整體自動化測試解決方案,一次自測等於多次測試,測一個瀏覽器等於測多個瀏覽器! 支持所有用戶行為: 鍵盤事件, 鼠標事件, alert, 文件上傳, 拖放, svg, sha

前端自動化測試UI RECORDER(二、PC錄制)

啟動服務 域名 run ports shadow 科學 兼容 webp htm PC錄制教程 準備工作: NodeJs環境 請自行先安裝好nodejs環境,在命令行執行node -v命令成功說明已經安裝成功 Chrome瀏覽器 JAVA環境 UI Recorder We

Android自動化測試Monkeyrunner從零開始

控制 麻煩 關於 人員 bsp android開發 直接 記錄 自動 最近由於公司在組織一個Free CoDE的項目,也就是由大家自己選擇研究方向來做一些自己感興趣的研究。由於之前我學過一點點關於android的東西,並且目前android開發方興未艾如火如荼,但自動化測試

UI自動化測試POM設計-maven工程

絕對路徑 pro 解決 unit 是否 分享 根據 osi ren 為了更好的管理UI自動化測試項目,介紹一下Maven項目創建以及應用 一. 配置Maven環境 1. 下載並安裝Maven 下載地址:http://maven.apache.org/downlo

Android自動化測試——MonkeyRunner(1)

一、MonkeyRunner是什麼 MonkeyRunner是使用Jython(使用Java程式語言實現的Python)寫出來的,它提供了多個API,通過monkeyrunner API 可以寫一個Python的程式來模擬操作控制Android裝置app,測試其穩定性並通過截圖可以方便地記錄出現的問題。

Android自動化測試——MonkeyRunner(2)

一、MonkeyRunner API MonkeyRunner API包含了三個模組在com.android.monkeyruner包中: 1、MonkeyRunner 一類用於MonkeyRunner程式的實用方法。該類提供了一種將MonkeyRunner連線到裝置或模擬器的方法。它還提供了為monk

Android自動化測試——MonkeyRunner(3)

本文主要介紹MonkeyDevice的方法。 上文中,使用MonkeyRunner方法連線裝置並返回一個MonkeyDevice物件,使用該物件呼叫MonkeyDevice方法可實現對裝置的操作。主要包括:點選、拖拽、截圖、按鍵、輸入內容 一、常量 MonkeyDevice的touch()、press(

Android自動化測試Monkeyrunner 指令碼編寫

# File:   Test1.py# Vision: V1.0# Author: Findyou# 引入本程式所用到的模組from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage# 連線手機裝置device = 

Appium+Python 自動化測試二:啟動APP(Android篇)

android版本 inf 環境 哪些 aapt code div port ons 前一篇寫了環境安裝,這篇記錄是記錄如何啟動APP以及啟動APP之前要做哪些事。 Appium 啟動APP至少需要5個參數,分別是‘platformName‘,‘platformVersio

5.2Appium移動端自動化測試連線Android模擬器

這裡大家先去下載一個夜神模擬器 1.aapt 環境變數配置  D:\androidsdk\android-sdk-windows\build-tools\24.0.0 目錄下找到aapt.exe,將這個路徑設定環境變數,新增到 path 下 --- 開啟 cmd。輸入 aapt

UI自動化測試系列-----TestNg中使用繼承

TestNg中可以使用繼承,一些公關的操作可以放在父類中,比如開啟瀏覽器等可以放在@BeforeClass中,關閉則放在@AfterClass中。  當子類實現了自己的@BeforeClass,@Test和@AfterClass,則執行子類時,物件直接呼叫自己的。如果有其中

UI自動化測試工具AirTest學習筆記從touch介面看影象識別

本篇更偏向於原始碼解析,適用於對airtest有一些瞭解,看過入門教程,寫過demo的童鞋,當然初學者也可以在本章的上手環節跳轉到網易官方最快5分鐘教程中學習,因為我覺得那篇教程已經夠好了,就不多寫入門教程了。 目錄 簡介 上手 進階 總結 簡介 Airtest

Android自動化測試Monkey使用

      Mokey是Android中的一個命令列工具,可以執行在模擬器裡或實際裝置中。它向系統傳送偽隨機的使用者事件流(如按鍵輸入、觸控式螢幕輸入、手勢輸入等),實現對正在開發的應用程式進行壓力

Android-自動化測試MonkeyRunner教程(詳細)

# File:   Test1.py# Vision: V1.0# Author: Findyou# 引入本程式所用到的模組from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage# 連線手機裝置device