• 测试常用脚本


    1.截图并保存到本地

    package scriptall;
    
    import java.io.IOException;
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    import javax.swing.plaf.SliderUI;
    
    public class screenshot {
        
        public static void getpictrue(String str1) throws IOException
        {   
            
            Runtime r=Runtime.getRuntime();
            r.exec("cmd /c adb shell screencap -p /sdcard/"+str1+".png");
        }
        public static String picnametime()
        {   
            Date date=new Date();
            DateFormat format=new SimpleDateFormat("yy/MM/dd HH:mm:ss");
            String time=format.format(date);
            String time2=filt(time);
            return time2;
            
            
        }
        public static String filt(String str)
        {
            Pattern p=Pattern.compile("[`~!@#$%^&*()+=|{}':;',//[//].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]");
            Matcher m=p.matcher(str);
            return m.replaceAll("").replace(" ", "").trim();
        }
        public static void main(String[] args) throws Exception
        {   
            String picname;
            picname=picnametime();
            getpictrue(picname);
        }
        
    
    }

    解析:1)调用系统命令时一定要加cmd/c 

            r.exec("cmd /c adb shell screencap -p /sdcard/"+str1+".png");

            2)获取系统时间

            Date date=new Date();

            DateFormat format=new SimpleDateFormat("yy/MM/dd HH:mm:ss");

            String time=format.format(date);

           3)过滤字符串

           Pattern p=Pattern.compile("[`~!@#$%^&*()+=|{}':;',//[//].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]");

          Matcher m=p.matcher(str);

           return m.replaceAll("").replace(" ", "").trim();

    2、录制视频

    package scriptall;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Scanner;
    
    public class recordvideo {
        public static void record(int time,String videoname) throws IOException, Exception
        {
            Runtime r=Runtime.getRuntime();
            Process p2=r.exec("cmd /c adb shell getprop ro.build.version.sdk");
            InputStreamReader in2=new InputStreamReader(p2.getInputStream());
            BufferedReader br2=new BufferedReader(in2);
            String str2;
            str2=br2.readLine();
            if(Integer.parseInt(str2)<19)
                {
                System.out.print("需要Android4.4及4.4以上版本才能录制视频哦");
                }
            else{
            Process p=r.exec("cmd /c adb shell screenrecord --time-limit "+time+" /sdcard/"+videoname+".mp4");
            InputStreamReader in=new InputStreamReader(p.getInputStream());
            BufferedReader br=new BufferedReader(in);
            String str;
            while((str=br.readLine())!=null)
            {   
                Thread.sleep(1000);
            }
            System.out.println("已录制完成!");
            }
        }
        public static void main(String[] args) throws Exception
        {   
            Scanner sc=new Scanner(System.in);
            String str=null;
            System.out.println("please input the video time:");
            str=sc.nextLine();
            int time=Integer.parseInt(str);
            
            Scanner sc2=new Scanner(System.in);
            String str2=null;
            System.out.println("please input the video name:");
            str2=sc2.nextLine();
            record(time,str2);
        
        }
        
    
    }

    解析:1)adb shell getprop ro.build.version.sdk可以获取sdk版本,如19的话就是低于android4.4的

             2)获取命令行输入

           Scanner sc2=new Scanner(System.in);
            String str2=null;
            System.out.println("please input the video name:");
            str2=sc2.nextLine();

    3.自己也写了个跑monkey的脚本,用白名单的方式,测试时只要输入要测试包的包名,包名间用空格隔开。另外每跑一次种子都是随机的。

    package scriptall;
    
    import java.awt.List;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStream;
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.Iterator;
    import java.util.Scanner;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    
    public class MonkeyLog {
        private static final String Logname = null;
        //运行monkey并获取LOG
        public static void monkeyrun(String logname) throws IOException
        {   
            
            Runtime r=Runtime.getRuntime();
            r.exec("cmd /c md d:\"+logname);
            for(int i=0;i<500;i++)
            {   
                System.out.println("第"+i+"次测试。。。 ");
                int seed=(int)(Math.random()*100);
                r.exec("cmd /c adb shell monkey --pkg-whitelist-file /data/local/tmp/whitelist.txt --throttle 300 -s "+seed+" -v -v -v 1000 >d:\"+logname+"\Monkey.txt");
                r.exec("cmd /c adb pull /data/anr d:\"+logname);
                r.exec("cmd /c adb pull /sdcard/mtklog d:\"+logname);
                r.exec("cmd /c adb pull /data/tombstones d:\"+logname);
            }
    
            
        }
        //获取Log文件夹的名字,以时间命名
        public static String logname()
        {
            Date date=new Date();
            DateFormat dateformat=new SimpleDateFormat("yy/MM/dd HH:mm:ss");
            String time=dateformat.format(date);
            String time2=filt(time);
            return "Log"+time2;
            
        }
        //过滤掉特殊字符串
        public static String filt(String str)
        {
            Pattern p=Pattern.compile("[`~!@#$%^&*()+=|{}':;',//[//].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]");
            Matcher m=p.matcher(str);
            return m.replaceAll("").replace(" ", "").trim();
        }
        //把用户输入的包名写入D盘中的whitelist.txt文件中,并把它push到data/local/tmp目录下
        public static void getmonkeypsg(ArrayList list) throws IOException
        {
            File f=new File("D:\whitelist.txt");//注意符号
            if(!f.exists())
            {
                f.createNewFile();
            }
            FileWriter fw=new FileWriter(f);
            BufferedWriter bw = new BufferedWriter(fw);
    
            Iterator it=list.iterator();
            while(it.hasNext())
            {   
                String str=it.next().toString();
                bw.write(str);
                bw.write("
    ");
            }
            bw.close();
            
            Runtime r=Runtime.getRuntime();
            r.exec("cmd /c adb push D:\whitelist.txt /data/local/tmp/");
            
        }
        public static void main(String[] args) throws IOException
        {   
            ArrayList<String> list=new ArrayList<String>();
            //获取命令行的输入
            Scanner s=new Scanner(System.in);
            System.out.println("请输入要测试的包名,空格隔开:");
            String str;
            str=s.nextLine();
            String[] strlist=str.split(" ");
            for(int i=0;i<strlist.length;i++)
            {
                list.add(strlist[i]);
                };
    
    
            getmonkeypsg(list);
            String Lognamme=logname();
            monkeyrun(Lognamme);
        }
        
    
    }

    知识点:1)

  • 相关阅读:
    vue(5)
    vue(4)
    vue(3)-防止闪烁
    vue(2)
    bootstrap 模态框
    2017年上半年工作总结和计划
    vue(1)
    文本框数量加减功能
    meta 控制移动端页面的缩放
    题解 P1550 【[USACO08OCT]打井Watering Hole】
  • 原文地址:https://www.cnblogs.com/penghong2014/p/4973770.html
Copyright © 2020-2023  润新知