Python安卓手机自动化 - 获取运行应用信息
获取应用appPackage和appActivity
cmd里面指向到雷电模拟器的路径,并输入 adb -s emulator-5554 shell
,里面的 emulator-* 就是之前adb devices里面的名称,这个意思是获取这个模拟器的shell,然后再输入 dumpsys activity | grep mFocusedActivity
即可获取当前打开的app的appPackage和appActivity。
华为鸿蒙系统为例真机调试
获取测试手机及被测app的信息(所需capability配置内容)
- platformName,声明被测手机系统是ios还是Android。
- platformVersion,即测试手机的Android版本号。可在手机设置里面查看,也可以通过命令
adb shell getprop ro.build.version.release
查看。 - deviceName,即测试手机的名称。可在手机设置里面查看,也可以通过命令
adb devices -l
查看,其中model即为连接的测试机的名称。 - appPackage,即被测app的包名。
- appActivity,即被测app的launcherActivity。手机上打开app,通过输入命令
adb shell dumpsys activity | findstr “mResume”
查看,如若获取不到需使用命令adb shell dumpsys activity | findstr “mFocus”
查看。,以今日头条app为例。 - newCommandTimeout,newCommandTimeout是appium等待下一次命令发送过来的时长。如果在这个时间范围内,还未收到下一次的命令,就会报超时异常。默认是60秒,可以根据需求设置对应时间。比如,测试过程中存在上传apk文件的这种操作,该操作耗时可能会比较长,若果不从新设置超时时间,可能在60s内无法完成上传操作,导致测试流程中断。 e.g. 60
- udid,1. udid是满足Appium允许多设备同时运行的参数,当存在多设备的时候,appium只会读取设备列表中的第一个设备进行运行。如果只设置devicename,是不能指定设备的唯一标识的,必须通过udid来确定设备,uidi是确定设备的唯一标识。2. Android 系统中可以使用
adb devices -l
来获取设备列表,从而取得udid - autoGrantPermissions,1. autoGrantPermissions是设置appium自动授予的权限的参数。比如,在设备首次安装app是会弹出需要授予系统权限的弹框,这种弹框的弹出可能会影响测试过程,但是如果所有的权限弹框操作都全部通过脚本去处理就会非常麻烦。因此可以使用autoGrantPermissions去自动授予权限,关闭权限弹框。2. 注意:当noReset参数是True的话,autoGrantPermissions则无法生效。 true or false
- noReset,Android: noReset的作用是停止APP、 不清除APP数据、 不卸载app。 true,false
- fullReset,Android:停止APP、 清除APP数据 或卸载app停止APP、 清除APP数据 或卸载app。 true,false
- dontStopAppOnReset,如果配置的APP是当前已经启动的APP的话,则不会kill掉当前页面,再重新启动的。(参数很有用,尤其在自动化测试过程中需要衔接上调case和下调case的使用), true,false。原理如下:
adb shell am start
包名/页面名 启动app,如果app已经启动,则不会再启动。adb shell am start -S
包名/页面名 启动app,如果app已经启动,会先关掉app再启动。- relaxed-security设置为true的话,可以在代码中使用adb命令。
- skipDeviceInitialization,如果设置为true,则在会话创建时取消设备启动检查(主要检查设备是否准备好,设置应用程序是否已安装等)。默认为False 。 true,false
- skipServerInstallation,如果设置为true,则跳过在被测设备上的UiAutomator2 Server组件安装和所有相关检查。如果您确定设备上安装了正确的服务器版本,这将有助于加快会话启动。如果没有安装服务器或安装了不正确的版本,那么稍后可能会出现意外错误。默认为False。 true,false
- skipUnlock,当设置成true时会跳过检查锁屏是否存在的操作。默认情况下,UiAutomator2驱动程序尝试在开始测试之前检测设备的屏幕是否被锁定并解锁(有时可能不稳定)。注意,此操作需要一些时间,因此强烈建议将此功能设置为true,并在测试设备上禁用屏幕锁定。 true or false
- skipLogcatCapture,设置为true将禁止在测试运行期间自动收集logcat输出。默认为False。 true or false
- systemPort,UiAutomator2服务器监听的端口号。默认情况下,选择8200…8299范围内的第一个空闲端口。如果在同一台计算机上运行并行测试,建议设置此值。
- ignoreUnimportantViews,启用或禁用布局层次结构压缩。如果启用压缩,框架中将只包含对uiautomator测试比较重要的节点。其他不必要的节点会被删除,默认为True。 true or false