android測試框架(二):UiAutomator四大對象使用(UiSelector,UiObject,UiCollection,UiScrollable)


import android.app.Instrumentation;
import android.os.RemoteException;
import android.view.KeyEvent;

import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.runner.AndroidJUnit4;
import androidx.test.uiautomator.UiCollection;
import androidx.test.uiautomator.UiDevice;
import androidx.test.uiautomator.UiObject;
import androidx.test.uiautomator.UiObjectNotFoundException;
import androidx.test.uiautomator.UiScrollable;
import androidx.test.uiautomator.UiSelector;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(AndroidJUnit4.class)
public class TestUi {
    public Instrumentation mInstrumentation;
    public UiDevice mUiDevice;

    @Before
    public void setUp() {
        mInstrumentation = InstrumentationRegistry.getInstrumentation();
        mUiDevice = UiDevice.getInstance(mInstrumentation);
    }

    /**
     * 模擬物理鍵
     */
    @Test
    public void testHome() throws RemoteException {
//        mUiDevice.pressHome();
//        mUiDevice.c(2000);
//        mUiDevice.pressMenu();
//        mUiDevice.waitForIdle(2000);
//        mUiDevice.pressRecentApps();

//        mUiDevice.pressKeyCode(KeyEvent.KEYCODE_H);
//        mUiDevice.pressKeyCode(KeyEvent.KEYCODE_U);
//        mUiDevice.pressKeyCode(KeyEvent.KEYCODE_A);
//        mUiDevice.pressKeyCode(KeyEvent.KEYCODE_N);
//        mUiDevice.pressKeyCode(KeyEvent.KEYCODE_G);
//

        //拖拽
//        mUiDevice.drag(900,2200,700,1000,50);
//         //等待時間
//        mUiDevice.waitForIdle(5000);
//
//        mUiDevice.drag(700,1000,900,2200,50);

        //滑動頁面
//        mUiDevice.swipe(800,1500,200,1500,20);
//        mUiDevice.waitForIdle(5000);
//        mUiDevice.swipe(200,1500,800,1500,20);

        //下拉通知欄
//        mUiDevice.openNotification();
        //快速設置
        mUiDevice.openQuickSettings();
    }


    /**
     * UiSelector核心類
     *
     * @throws UiObjectNotFoundException
     */
    @Test
    public void testUiSelector() throws UiObjectNotFoundException {
        /*
        //text查找
        UiSelector uiSelector = new UiSelector().text("錢包");
        UiObject uiObject = new UiObject(uiSelector);
        uiObject.click();
        */

        /*
         //textContains (包含字符)查找
         UiSelector uiSelector = new UiSelector().textContains("包");
         UiObject uiObject = new UiObject(uiSelector);
         uiObject.click();
         */

        /*
         //textMatches (正則表達式)查找
         UiSelector uiSelector = new UiSelector().textMatches(".*W.*");
         UiObject uiObject = new UiObject(uiSelector);
         uiObject.click();
         */

        /*
        //textStartsWith (首字符)查找
        UiSelector uiSelector = new UiSelector().textStartsWith("電");
        UiObject uiObject = new UiObject(uiSelector);
        uiObject.click();
        */

        /*
        //description 查找——>(descriptionContains,descriptionMatches,descriptionStartsWith)
        UiSelector uiSelector = new UiSelector().description("瀏覽器");
        UiObject uiObject = new UiObject(uiSelector);
        uiObject.click();
        */

        /*
        //packageName 查找
        UiSelector uiSelector = new UiSelector().packageName("com.tencent.mm");
        UiObject uiObject = new UiObject(uiSelector);
        uiObject.click();
        */

        //className+index
        UiSelector uiSelector = new UiSelector().className("android.widget.TextView").index(1);
        UiObject uiObject = new UiObject(uiSelector);
        uiObject.click();

        //.......各種屬性皆在 UiSelector 類中查看
    }

    /**
     * UiObject核心類
     *
     */
    @Test
    public void testUiObject() throws UiObjectNotFoundException {
        UiSelector uiSelector = new UiSelector().text("錢包");

        UiObject uiObject = new UiObject(uiSelector);
        //普通點擊
//        uiObject.click();
        //點擊後等在新的窗口打開
        uiObject.clickAndWaitForNewWindow();
        //點擊後等在新的窗口打開(超時時間)
        uiObject.clickAndWaitForNewWindow(1000);
        //點擊左上角
        uiObject.clickTopLeft();
        //長點擊
        uiObject.longClick();

        //把當前按鈕拖到某個圖標上面
        uiObject.dragTo(new UiObject(new UiSelector().resourceId("com.huawei.android.launcher:id/workspace_screen")),20);
        //滑動(上下左右)
        uiObject.swipeUp(20);
    }

    /**
     * UiCollection核心類
     *  對象的集合進行操作
     */
    @Test
    public void testUiCollection() throws UiObjectNotFoundException {
        //找的是個父佈局
        UiCollection viewGroup = new UiCollection(new UiSelector().className("android.widget.LinearLayout").index(3));
        //通過父佈局找子控件
        UiObject div = viewGroup.getChildByDescription(new UiSelector().resourceId("com.android.calculator2:id/div"), "除");
        UiObject mul = viewGroup.getChildByDescription(new UiSelector().resourceId("com.android.calculator2:id/mul"), "乘");

        //找的是個父佈局
        UiCollection viewGroup1 = new UiCollection(new UiSelector().className("android.widget.LinearLayout").index(5));
        //通過父佈局找子控件
        UiObject digit7 = viewGroup1.getChildByText(new UiSelector().resourceId("com.android.calculator2:id/digit7"), "7");
        UiObject digit8 = viewGroup1.getChildByText(new UiSelector().resourceId("com.android.calculator2:id/digit8"), "8");
        UiObject digit9 = viewGroup1.getChildByText(new UiSelector().resourceId("com.android.calculator2:id/digit9"), "9");


        //找的是個父佈局
        UiCollection viewGroup2 = new UiCollection(new UiSelector().className("android.widget.LinearLayout").index(9));
        //通過父佈局找子控件
        UiObject equal = viewGroup2.getChildByDescription(new UiSelector().resourceId("com.android.calculator2:id/equal"), "等於");

        digit7.click();
        mul.click();
        digit8.click();
        digit9.click();
        equal.click();

        //一共多少子節點
        int childCount = viewGroup1.getChildCount();
        System.out.println("childCount==>"+childCount);//7

        //條件爲button的子節點
        int childCount1 = viewGroup1.getChildCount(new UiSelector().className("android.widget.Button"));
        System.out.println("childCount1==>"+childCount1);//3
    }
    /**
     * UiScrollable核心類
     *  滾動的頁面處理
     */
    @Test
    public void testUiScrollable() throws UiObjectNotFoundException {
        UiScrollable uiScrollable = new UiScrollable(new UiSelector().className("android.widget.ScrollView"));
        //向前滾動
//        uiScrollable.scrollForward(100);
        //向後滾動
//        uiScrollable.scrollBackward();
        //滾動到最前(次數)
//        uiScrollable.scrollToBeginning(5);
        //滾動到結尾(次數)
        uiScrollable.scrollToEnd(5);

        //快速的滾動(flingForward,flingBackward,flingToEnd,flingToBeginning)
        uiScrollable.flingToBeginning(3);

        //關於到某個位置
        uiScrollable.scrollTextIntoView("關於手機");

        //關於到某個位置
        uiScrollable.scrollIntoView(new UiSelector().text("關於手機"));

        //滾動找到對象並點擊
        UiObject childByText = uiScrollable.getChildByText(new UiSelector().text("關於手機"), "關於手機", true);
        childByText.click();
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章