Android 以编程方式触发UIAutomator测试脚本
我们使用Android 以编程方式触发UIAutomator测试脚本,android,android-testing,android-uiautomator,Android,Android Testing,Android Uiautomator,我们使用UIAutomator实现自动化 要运行UIAutomator测试脚本,我们使用USB或Wifiadb从命令提示符编译脚本,它将在android设备上运行 UiAutomator脚本在编译后将以jar格式出现。 我们将在设备中推送jar,并触发测试脚本。 在“adb shell uiautomator runtestTestPackage.jar”中启动测试脚本的命令 它正在使用正常的adb连接 但是在我们的例子中,我们必须在没有任何adb连接的情况下启动测试脚本 因此,我们尝试使用此j
UIAutomator
实现自动化
要运行UIAutomator
测试脚本,我们使用USB
或Wifi
adb从命令提示符编译脚本,它将在android设备上运行
UiAutomator
脚本在编译后将以jar格式出现。
我们将在设备中推送jar,并触发测试脚本。
在“adb shell uiautomator runtestTestPackage.jar
”中启动测试脚本的命令
它正在使用正常的adb连接
但是在我们的例子中,我们必须在没有任何adb连接的情况下启动测试脚本
因此,我们尝试使用此java代码在设备中以编程方式传递命令
try {
StringBuffer output = new StringBuffer();
Process p = Runtime.getRuntime().exec(params[0]);
BufferedReader reader = new BufferedReader(new InputStreamReader(
p.getInputStream()));
String line = "";
while ((line = reader.readLine()) != null) {
output.append(line + "\n");
p.waitFor();
}
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
执行后,我们将得到以下异常:
java.lang.securityException:longMsg=您没有调用RegisterUIteStatAutomationService所需的android.permission.RETRIEVE\u WINDOW\u内容
如果我们使用adb连接从命令提示符运行脚本,它就可以工作了。但是,如果我们以编程方式尝试该命令,就会出现此异常
我们了解到,通过启用RETRIEVE\u WINDOW\u CONTENT
权限,上述问题可以在根安卓设备中解决。但我们希望此脚本在非根目录设置上运行
有人能帮我解释一下这个安全许可问题吗
如何解决此问题?我认为该类型的权限仅授予系统应用程序。有时检查此项,您将获得帮助。我想知道它如何在adb连接下正常运行??因为如果从
adb
运行,会分配不同的权限。另一方面,想象一下如果设备上的任何应用程序都可以启动UiAutomator测试会发生什么。