UIAutomator2.0详解(UIDevice篇----获取设备名称和Package名称)

UIDevice提供了4个方法(其中有1个方法废弃),用来获取设备和Package名称。分别是

(1)public String getCurrentActivityName ()

用于获取当前Activity的Name,但官方文档中,注明该方法可信度不高,且被弃用。所以无需考虑。

(2)public String getCurrentPackageName ()

获取当前APP Package的Name,而非当前Activity所在Package的Name。

(3)public String getLauncherPackageName ()

获取启动器(Launcher)所在Package的Name,并非测试APP启动Activity所在Package的Name。

(4)public String getProductName ()

获取设备名称。

我们还是用一个简单的Demo来演示以上方法的使用。

测试需求如下:

在不同的Activity中获取设备名称和Package名称。
两个Activity分别位于:com.breakloop.test和com.breakloop.test2
两个Activity名称分别为:MainActivity和Main2Activity

测试案例代码:

@Test
    public void NameTestCase1(){
        String packageName="com.breakloop.test";
        String activityName=".MainActivity";
        String value;

        //(1)start APP
        Log.i(TAG, "TestCase1: open APP");
        Utils.startAPP(mDevice,packageName,activityName);

        //(2)wait 1s
        mDevice.waitForWindowUpdate(packageName,1000);
        Log.i(TAG, "TestCase1: wait for 1s");

        //(3)Get Infos
        Log.i(TAG, "TestCase1: Get Package Name = "+mDevice.getProductName() + " in MainActivity");
        Log.i(TAG, "TestCase1: Get Current Package Name = "+mDevice.getCurrentPackageName() + " in MainActivity");
        Log.i(TAG, "TestCase1: Get Launcher Package Name = "+mDevice.getLauncherPackageName() + " in MainActivity");

        //(3)Jump to another Activity and get Infos again
        UiObject2 button=mDevice.findObject(By.res("com.breakloop.test:id/btn_goto2"));

        if(button==null){
            Log.i(TAG, "TestCase1: Do not find Button");
        }else {
            if(button.isEnabled()){
                button.click();
                mDevice.waitForWindowUpdate(packageName,1000);

                Log.i(TAG, "TestCase1: Get Package Name = "+mDevice.getProductName() + " in Main2Activity");
                Log.i(TAG, "TestCase1: Get Current Package Name = "+mDevice.getCurrentPackageName() + " in Main2Activity");
                Log.i(TAG, "TestCase1: Get Launcher Package Name = "+mDevice.getLauncherPackageName() + " in Main2Activity");
            }
        }

        Utils.closeAPP(mDevice,packageName);
    }

测试结果如下:

UIAutomator2.0详解(UIDevice篇----获取设备名称和Package名称)_第1张图片

可见,
(a)在不同activity下获取的信息完全相同。
(b)Activity Name确实不可信。

你可能感兴趣的:(android测试,Android自动化测试)