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();
}
}
android測試框架(二):UiAutomator四大對象使用(UiSelector,UiObject,UiCollection,UiScrollable)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.