如何在appium测试用例中运行android shell命令?

时间:2016-08-17 00:16:08

标签: android eclipse appium

我是Android和Appium的新手。我有一个使用Appium的java测试用例。 它使用Appium驱动程序命令执行滚动,点击等操作。 在此测试中,我需要报告应用程序的CPU Util值。我在网上找到了这个代码。

RandomAccessFile reader = new RandomAccessFile(" / proc / stat"," r");             String load = reader.readLine();

        String[] toks = load.split(" +"); // Split on one or more spaces

         idle1 = Long.parseLong(toks[4]);
         cpu1 = Long.parseLong(toks[2]) + Long.parseLong(toks[3]) + Long.parseLong(toks[5])
                + Long.parseLong(toks[6]) + Long.parseLong(toks[7]) + Long.parseLong(toks[8]);

但是我怎么在eclipse上的Appium java项目中运行这段代码,因为我没有android项目?

非常感谢您提前获得的帮助

1 个答案:

答案 0 :(得分:0)

要获取有关Android设备的信息,您可以使用org.apache.commons.exec.CommandLineRuntime;

https://developer.android.com/studio/profile/investigate-ram.html#ViewingAllocations

这是一个主要的假设,主要是因为设备必须连接到执行测试的同一台机器上才能阻止任何类型的可伸缩性:adb shell dumpsys meminfo <package_name|pid> [-d]

import java.io.ByteArrayOutputStream;
import org.apache.commons.exec.CommandLine;
import org.apache.commons.exec.DefaultExecutor;
import org.apache.commons.exec.Executor;
import org.apache.commons.exec.PumpStreamHandler

CommandLine cmd = new CommandLine("adb");
cmd.addArgument("shell", false).addArgument("dumpsys", false).addArgument("meminfo", false).addArgument("YOUR_ANDROID_PACKAGE", false);
DefaultExecutor exec = new DefaultExecutor();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
PumpStreamHandler streamHandler = new PumpStreamHandler(outputStream);
exec.setStreamHandler(streamHandler);
exec.execute(cmd);
outputStream.toString()

另见: How can I capture the output of a command as a String with Commons Exec?