1. 如果uiautomator脚本是写在被测试App源代码代码的test目录中,那么我们就直接把所需要的权限加到被测试App的AndroidManifest.xml文件中即可。
2. 往往我们的测试都是黑盒的,并不会把测试脚本与被测试App写在一起,这时使用AS开发的时候源代码里面就不会包含AndroidManifest.xml这个问题,那么我们需要在工程的main目录下创建一个这样的文件
我们创建的这个AndroidManifest.xml文件内容只需要写上我们想要申请的权限即可
在AndroidManifest.xml中加完了权限后,还需要做如下操作才能真正的解决这个问题。
uiautomator虽然单独做为一个工程,但是当我们查看测试代码工程编译的结果会发现实际上是两个apk文件
这两个apk一个是包含了我们测试脚本的测试apk,另一个apk就是包含了我们刚刚添加了各种权限打包而成的,通过命令将这个apk手动安装到手机里面,这里关键是要加上-g这个参数的意义是授予应用程序清单中列出的所有权限(仅限Android 6.0)。这样我们再执行测试脚本就不会出现前面提到的权限问题了。
3. 简单说一下我理解的这么做的原理
使用uiautomator1.0的时候我们没有遇到这样的问题(使用Eclipse开发环境)。uiautomator1.0的脚本最后是打包成为了一个可执行的jar文件,我理解这个jar文件凌驾于apk之上,所以可以操作其他apk的任何界面。不过到6.0之后的版本是不是会有权限问题,这个还没有经过验证
当切换成了Android Studio编译环境,相应的runner也进化配置成为了“AndroidJUnitRunner”,这是我们发现打包后的uiautomator不再是原来的jar而是变成了一个testapk。刚刚提到打包文件夹里面有两个apk,一个是我们的testapk,一个是源程序apk,如果我们不是把测试脚本放在源代码中那么就是个是空的apk,这个空的apk就是测试apk依托的一个假的工程文件。我们把权限写在AndroidManifest.xml 里面就是通过这个依托的apk来简介获得到权限。
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) | Powered by Discuz! X3.2 |