zoukankan      html  css  js  c++  java
  • 测试常用脚本

    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)

  • 相关阅读:
    AX ERROR: Could not find my mock parent, most likely I am stale 不及格的程序员
    利用Segue在视图控制器间传值的问题 不及格的程序员
    Creating a Singleton Instance 不及格的程序员
    iPad 通知 UIKeyboardWillShowNotification 不会在keyBoard处在Undock状态下接到通知 不及格的程序员
    Why RootViewController's view is rotated Automatically by System when the app first loaded? 不及格的程序员
    如何弹出UIDatePicker最好 不及格的程序员
    jQuery开始做恶了 不及格的程序员
    what is the SEL,id and IMP,Class ,Method? 不及格的程序员
    Objectivec 字符串比较的陷井 不及格的程序员
    Unable to create any keyboard shortcuts after the iOS 6.1.3 update on iPad. 不及格的程序员
  • 原文地址:https://www.cnblogs.com/penghong2014/p/4973770.html
Copyright © 2011-2022 走看看