所有人!我正在尝试为我的测试框架编写侦听器,使用Appium,java,TestNG for Android应用程序在真实设备上。我想在我的测试中使用一些ADB命令,例如截图、录制视频、获取logcat文件等。
所以我有: Mac OS安卓设备小米,用安卓7.0版ADB Android SDK java
如果我使用终端中的命令: adb exec-out screencap -p > /Users/dmytro/Documents/other/1.png - screenshot成功保存在适当的文件夹中。手动输入终端和我的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 OS上工作得很好,但在Mac上就不行了。
请帮我用java代码执行ADB命令。
发布于 2018-05-31 17:55:08
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?
https://stackoverflow.com/questions/50620439
复制相似问题