大家好! 我正在尝试在真实设备上使用Appium,java,TestNG for Android应用程序为我的测试框架编写监听器。 我想通过我的测试使用一些ADB命令,例如截屏,录制视频,获取logcat文件,e.t.c。
所以我有: 苹果系统 Android设备小米,安卓版7.0 ADB ANdroid SDK 的java
如果我在终端使用命令:adb exec-out screencap -p> /Users/dmytro/Documents/other/1.png - 屏幕截图已成功保存在相应的文件夹中。其他命令也可以在我的IntelijIDEA的终端和终端中手动输入。
如果我使用Runtime类以编程方式使用相同的命令:
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命令。
答案 0 :(得分:2)
adb命令正在成功,但未按预期重定向到文件。使用Java Runtime.getRuntime().exec()
,重定向的>
将无效。可以从此StackOverflow问题中找到对此的说明:Runtime's exec() method is not redirecting the output
adb logcat
本身也有-f
标志,告诉进程写入文件,如本讨论中所述:Catch LogCat programmatically or export it to file?