【发布时间】:2018-05-31 09:00:48
【问题描述】:
大家! 我正在尝试使用 Appium、java、TestNG for Android 应用程序在真实设备上为我的测试框架编写监听器。 我想通过我的测试使用一些 ADB 命令,例如截屏、录制视频、获取 logcat 文件等。
所以我有: 苹果系统 Android 设备小米,Android 版本 7.0 亚行 安卓SDK 爪哇
如果我在终端中使用命令: adb exec-out screencap -p > /Users/dmytro/Documents/other/1.png - 屏幕截图成功保存在适当的文件夹中。在终端和我的 IntelijIDEA 的终端中手动键入的其他命令也可以正常工作。
如果我通过运行时类以编程方式使用相同的命令:
Runtime.getRuntime().exec(adb exec-out screencap -p > /Users/dmytro/Documents/other/1.png"); // Save screenshot to Mac machine
或
Runtime.getRuntime().exec("adb logcat > /Users/dmytromynziak/Documents/other/log.txt"); //Save logical file
Runtime.getRuntime().exec("db exec-out screencap -p > /sdcard/1.png"); // Save screenshot to scared of android device
它不起作用,屏幕截图没有保存到Mac机器上,甚至在android设备上也找不到。
我没有收到任何错误,看起来一切正常。查看调试模式的屏幕截图。
实际上,一些 adb 命令在 WIndows 操作系统上运行良好,但在 Mac 上却不行。
请帮我在java代码中执行ADB命令。
【问题讨论】:
-
我尝试在脚本中使用 shell 执行另一个命令:Runtime.getRuntime().exec("adb shell screencap -p sdcard/sc1.png")。它有效!但屏幕保存到 android 设备中,所以我需要拉它。所以我认为问题是我尝试在终端中使用命令,但以编程方式我留在 android 设备中,所以需要使用 shell 脚本
-
如果您从 Java 代码中执行
adb devices,您会得到任何输出吗? -
@Domestus 是的,它显示了设备列表,所以我认为执行命令有问题
标签: java android adb appium appium-android