Appium 【分享】C# Appium 脚本中如何获取 Android 分辨率

water · 2015年02月26日 · 最后由 water 回复于 2015年02月26日 · 2000 次阅读

研究了半天,终于搞定了,由于 C# 的 Driver 没有直接获取 Android 分辨率的函数,还得我自己写。查了下资料终于搞定了____^ 分享出来,以后我忘了也可以来参考。

C# 的代码如下:

            Process process = new Process();
            String Text = "";
            process.StartInfo.FileName = @"adb.exe";
            process.StartInfo.Arguments = "shell dumpsys window displays";//获取分辨率信息的关键命令,某一行会包含
// “ init=720x1280 320dpi cur=720x1280 app=720x1184 rng=720x670-1196x1134” 这样子的信息

            process.StartInfo.UseShellExecute = false;
            process.StartInfo.RedirectStandardInput = false;
            process.StartInfo.RedirectStandardOutput = true;
            process.StartInfo.RedirectStandardError = true;
            process.StartInfo.CreateNoWindow = true;
            process.Start();
            StreamReader reader = process.StandardOutput;//截取输出流

            string line = reader.ReadLine();//每次读取一行
            while (!reader.EndOfStream)
            {
                if (line.Contains("init=")){
                    Text = Text + line;
                }
                line = reader.ReadLine();
            }
            process.WaitForExit();//等待程序执行完退出进程
            process.Close();//关闭进程
            reader.Close();//关闭流

            String XString = Text.Substring(Text.IndexOf("=") + 1, Text.IndexOf("x") - Text.IndexOf("=") - 1);
            String YString = Text.Substring(Text.IndexOf("x") + 1, Text.IndexOf("320dpi") - Text.IndexOf("x") - 2);

            Console.WriteLine(XString);
            Console.WriteLine(YString);

            int X = System.Int32.Parse(XString);//这个X和Y就是分辨率信息了!
            int Y = System.Int32.Parse(YString);
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 6 条回复 时间 点赞

你好,我是新手,如何看 driver 中提供了哪些方法?

#1 楼 @xingjizhao 在 driver 后面按 .

有 wm size 的方法可以用这个 更迅捷

#3 楼 @kasi 怎么用?

shell wm size

#5 楼 @kasi 嗯,也可以拿得到,效果差不多,多谢!

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册