• 【转】自动化测试中用到的一些功能类


    WebDriver处理一些弹窗

    import java.util.Set;
    import org.openqa.selenium.Alert;
    import org.openqa.selenium.By;
    import org.openqa.selenium.NoAlertPresentException;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebDriverException;
    import org.openqa.selenium.ie.InternetExplorerDriver;
     
    public class AlertOperate {
        static WebDriver dr = new InternetExplorerDriver();
     
        public static void main(String args[]) throws InterruptedException{
            dr.get("www.baidu.com");
     
            dr.findElement(By.id("lb")).click();
     
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
     
            tanchukuang();
        }
     
     
        //处理潜在的1个alert(javascript弹出框)
        public boolean dealPotentialAlert(WebDriver driver,boolean option) {
            boolean flag = false;
            try {
                Alert alert = driver.switchTo().alert();
                if (null == alert)
                    throw new NoAlertPresentException();
                try {
                    if (option) {
                        alert.accept();
                        System.out.println("Accept the alert: " + alert.getText());
                    } else {
                        alert.dismiss();
                        System.out.println("Dismiss the alert: " + alert.getText());
                    }
                    flag = true;
                } catch (WebDriverException ex) {
                    if (ex.getMessage().startsWith("Could not find"))
                        System.out.println("There is no alert appear!");
                    else
                        throw ex;
                }
            } catch (NoAlertPresentException e) {
                System.out.println("There is no alert appear!");
            }
            return flag;
        }
     
        //处理非JS弹窗
        public static boolean testNewWindow(){
            //当前窗口句柄
             String currentHandle = dr.getWindowHandle();
            //得到所有窗口的句柄
             Set<String> handles = dr.getWindowHandles();
             handles.remove(currentHandle);
             if (handles.size() > 0) {
                 try{
                     dr.switchTo().window(handles.iterator().next());
                     //dr.switchTo().window(dr.getWindowHandles().iterator().next());
                     return true;
                 }catch(Exception e){
                     System.out.println(e.getMessage());
                     return false;
                 }
             }
             System.out.println("Did not find window");
             return false;
        }
     
        //一般弹出窗口
        public static void tanchukuang() throws InterruptedException{
            //得到所有窗口
            Set<String> allWindowsId = dr.getWindowHandles();
            //通过查找页面内容得到新的窗口
            for(String windowId : allWindowsId){
                dr.switchTo().window(windowId);
                Thread.sleep(1000);
                dr.findElement(By.id("TANGRAM__PSP_10__userName")).sendKeys("test");
     
                //第一个按钮是确定按钮
                //dr.findElement(By.xpath("//button[@type='button']")).click();
                //System.out.println(dr.switchTo().window(windowId).getTitle());
                break;
            }
        }
     
    }
    View Code

    数据转换

    public class Chanage {
        //int to String
        public static String IntToString(int i){
            String s = Integer.toString(i);
            return s;
        }
     
        //String to int
        public static int StringToInt(String s){
            int i = Integer.parseInt(s);
            return i;
        }
    }
    View Code

    和数据库交互

    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
     
    import com.mysql.jdbc.Connection;
     
    class ConnMySQL {
        Connection conn;
        Statement stmt;
        ResultSet rs1;
        int rs2;
     
        public void connection() throws Exception{
            String db = "meeting";
            String driver = "com.mysql.jdbc.Driver";
            String url = "jdbc:mysql://172.16.3.9:3306/"+db;
            String uname = "admin";
            String pwd = "itserver";
     
            //加载驱动
            Class.forName(driver);
            //连接数据库
            conn = (Connection) DriverManager.getConnection(url, uname, pwd);
     
            if(!conn.isClosed()){
                //System.out.println("连接成功!");
            }
        }
     
     
        //执行查询操作返回ResultSet类型
        public void  executeSql0(String sql) throws SQLException{
     
            //创建语句对象,用来执行sql语句
            stmt = conn.createStatement();
            //执行sql
            rs1 = stmt.executeQuery(sql);
     
            while(rs1.next()){
                String name = rs1.getString("meetingId");
                String subject = rs1.getString("e164");
                String regionName = rs1.getString("state");
                System.out.println(name+" "+subject+" "+regionName);
            }
            rs1.close();
        }
     
        //执行查询操作返回ResultSet类型
        public void  executeSql1(String sql) throws SQLException{
     
            //创建语句对象,用来执行sql语句
            stmt = conn.createStatement();
            //执行sql
            rs1 = stmt.executeQuery(sql);
     
            while(rs1.next()){
                String id = rs1.getString("id");
                String subject = rs1.getString("subject");
                String startTime = rs1.getString("startTime");
                String endTime = rs1.getString("endTime");
                String organiger = rs1.getString("organiger");
                String status = rs1.getString("status");
                System.out.println(id+" "+subject+" "+startTime+" "+endTime+" "+organiger+" "+status);
            }
            rs1.close();
            conn.close();
        }
     
     
        //执行增删改操作返回int类型
        public void executeSql2(String sql) throws SQLException{
            stmt = conn.createStatement();
            rs2 = stmt.executeUpdate(sql);
     
            stmt.close();
            conn.close();
        }
    }
    View Code

    创建EXCEL

    // 生成Excel的类 
    import  java.io.File;
     
    import  jxl.Workbook;
    import  jxl.write.Label;
    import  jxl.write.WritableSheet;
    import  jxl.write.WritableWorkbook;
     
    public class CreateExcel{
        public static void main(String args[]){
            //Create_Excel c_e = new Create_Excel();
            //c_e.createexcel();
            //System.out.printf("success!!");
       }
    }
     
    class Create_Excel{
        public void createexcel(){
            try{
                //  打开文件 
                WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
                //  生成名为“第一页”的工作表,参数0表示这是第一页 
                WritableSheet sheet = book.createSheet("第一页",0);
                //  在Label对象的构造子中指名单元格位置是第一列第一行(0,0)
                //  以及单元格内容为test 
                Label label1 = new  Label(0,0,"test");
                Label label2 = new  Label(1,1,"test");
     
                //  将定义好的单元格添加到工作表中 
                sheet.addCell(label1);
                sheet.addCell(label2);
     
               /* 
                * 生成一个保存数字的单元格 必须使用Number的完整包路径,否则有语法歧义 单元格位置是第二列,第一行,值为555
                */ 
               jxl.write.Number number = new jxl.write.Number(1,0,555);
               sheet.addCell(number);
     
                //  写入数据并关闭文件 
               book.write();
               book.close();
     
           }catch(Exception e){
               System.out.println(e);
           }
        }
    }
    View Code

    读取EXCEL

    // 读取Excel的类 
    import  java.io.File;
     
    import  jxl.Cell;
    import  jxl.Sheet;
    import  jxl.Workbook;
     
    /*
     * 参数1:第几个工作表
     * 参数2:第几列
     * 参数3:第几行
     * 参数都从0开始
     * 返回值:当前单元格的数据
     */
    public class ReadExcel{
        static String result;
        static Workbook book;
        static Sheet sheet;
        public static void main(String args[]){
            //readExcel(0,1,0);
            excelNum(0);
        }
        public static String readExcel(int no,int row,int line){
            try{
                book = Workbook.getWorkbook(new File("test.xls"));
                //  获得第一个工作表对象 
                sheet = book.getSheet(no);
                //  得到第一列第一行的单元格 
                Cell cell1 = sheet.getCell(row,line);
                result = cell1.getContents();
                System.out.println(result);
                book.close();
             }catch(Exception e){
                System.out.println(e);
             }
            return result;
        }
     
        //返回行数
        public static int excelNum(int no){
            int col = 0;
            int row = 0;
            try{
                book = Workbook.getWorkbook(new File("test.xls"));
                sheet = book.getSheet(no);
                //得到行数和列数
                col = sheet.getColumns();    //列数
                row = sheet.getRows();        //行数
                System.out.println(col+" 列");
                System.out.println(row+" 行");
                book.close();
            }catch(Exception e){
                System.out.println(e);
            }
            return row;
        }
    }
    View Code

    更新EXCEL

    import  java.io.File;
    import  jxl.Workbook;
    import  jxl.write.Label;
    import  jxl.write.WritableSheet;
    import  jxl.write.WritableWorkbook;
     
    public class UpdateExcel{
        public static void main(String args[]){
            try{
                //  Excel获得文件 
                Workbook wb = Workbook.getWorkbook(new File("test.xls"));
                //  打开一个文件的副本,并且指定数据写回到原文件 
                WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"),wb);
                //  添加一个工作表 
                WritableSheet sheet = book.createSheet("第二页",1);
                sheet.addCell(new Label(0,0,"第二页的测试数据"));
                book.write();
                book.close();
            }catch(Exception e){
                System.out.println(e);
            }
        } 
    }
    View Code

    WebDriver判断元素是否存在

    import java.util.concurrent.TimeUnit;
     
    import org.openqa.selenium.By;
    import org.openqa.selenium.NoSuchElementException;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.ie.InternetExplorerDriver;
     
    /*
     * 判断一个元素是否存在
     */
    public class ElementIsExsit {
        //查找一个元素是否存在
        public boolean isElementExsit(WebDriver driver, By locator) {
            boolean flag = false;
            try {
                WebElement element=driver.findElement(locator);
                //flag = true;
                flag=null!=element;
                System.out.println("元素: " + locator.toString()+ " 存在!");
            }catch(NoSuchElementException e) {
                System.out.println("元素: " + locator.toString()+ " 不存在!");
                flag = false;
            }
            return flag;
        }
     
        //如何使用上面的方法
        public void test(){
            WebDriver driver = new InternetExplorerDriver();
     
            //显性等待
            driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
     
            By locator = By.id("id");
            isElementExsit(driver,locator);
        }
    }
    View Code

    Java下载图片

    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.UnsupportedEncodingException;
    import java.net.URI;
    import java.net.URISyntaxException;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
     
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.NameValuePair;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.entity.UrlEncodedFormEntity;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.message.BasicNameValuePair;
    import org.apache.http.util.EntityUtils;
     
    import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;
     
    public class Movision_verifyImage {
    private static HttpClient hc = new DefaultHttpClient();
     
     
        public static void main(String args[]) throws ClientProtocolException, IOException, ParseException, URISyntaxException{
     
            //获取图片验证码页面随机参数(当前时间)
            long date = new Date().getTime();
            System.out.println(date);
     
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("random",Long.toString(date)));
            get("http://172.16.3.6/admin/portalVerifyImage",params);
     
        }
     
        /*
         * 带参数的GET请求
         * 
         */
        public static void get(String url,List<NameValuePair> params) throws ParseException, UnsupportedEncodingException, IOException, URISyntaxException{
            //get请求
            HttpGet httpget = new HttpGet(url);
            //设置参数
            String str = EntityUtils.toString(new UrlEncodedFormEntity(params));
            httpget.setURI(new URI(httpget.getURI().toString()+"?"+str));
     
            //发送请求
            HttpResponse re = hc.execute(httpget);
     
            //获取相应实体
            HttpEntity entity = re.getEntity();
     
            if (entity != null && entity.isStreaming()) {
                File storeFile = new File("F:\test.jpg");
                FileOutputStream fos = new FileOutputStream(storeFile);
     
                // 将取得的文件文件流写入目标文件
                InputStream is = entity.getContent();
                byte[] b = new byte[1024];
                int j = 0;
     
                while ((j = is.read(b)) != -1) {
                   fos.write(b, 0, j);
                }
                fos.flush();
                fos.close();
             } else {
                System.out.println("[" + url + "] 未找到.");
                return;
             }
     
            //关闭连接
            hc.getConnectionManager().shutdown();
        }
    }
    View Code

    Java远程登录linux并执行命令

    import java.io.BufferedReader;
    import java.io.FileWriter;
    import java.io.InputStream;
    import java.io.InputStreamReader;
     
    import ch.ethz.ssh2.Connection;
    import ch.ethz.ssh2.Session;
    import ch.ethz.ssh2.StreamGobbler;
     
     
    /*
     * 远程调用linux下的vmstat命令,并将结果完整写入文件中
     */
    public class SSHTest {
        /**
         * @param args
         * @throws IOException
         */
        /*
         * 主机地址、端口、用户名、密码
         */
        static String hostName = "172.16.3.9";
        static int port = 2222;
        static String userName = "root";
        static String pwd = "kedats";
     
     
        public static void main(String[] args) throws Exception {
            // TODO Auto-generated method stub
            System.out.println("开始连接主机");
            Connection conn = new Connection(hostName, port);
            conn.connect();
            boolean isdenglu = conn.authenticateWithPassword(userName, pwd);
            if (isdenglu) {
                System.out.println("ssh2登陆成功");
            } else {
                System.out.println("登陆失败");
            }
     
            //System.out.println("当前目录:");
     
            Session ses = conn.openSession();
            ses.execCommand("vmstat 2");
            InputStream stdout = new StreamGobbler(ses.getStdout());
            BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
     
            FileWriter fw = new FileWriter("F:\vmstat.txt");
     
            while (true)      
            {      
                String line = br.readLine();      
                if (line == null)      
                    break;
                System.out.println(line);
     
                fw.write(line+"
    ",0,line.length()+2);
                fw.flush();
     
    //            OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("data2.txt"));
    //            osw.write(line,0,line.length());
    //            osw.flush();
    //            PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("hello3.txt")),true);
    //            pw.println(line);
     
            }
     
            System.out.println("运行结果:"+ses.getExitStatus());
     
            //关闭文件
            fw.close();
     
            ses.close();
            conn.close();
        }
     
    }
    View Code

    Java将控制台打印写入日志文件

    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.GregorianCalendar;
     
    public class ToLog {
     
        static GregorianCalendar time = new GregorianCalendar();
    //    int year = time.get(Calendar.YEAR);                    //得到日期的年份
    //    int day = time.get(Calendar.DAY_OF_MONTH);            //得到日期的天
    //    int month = time.get(Calendar.MONTH)+1;                //得到日期的月份
    //    int weekDay = time.get(Calendar.DAY_OF_WEEK);        //得到日期为星期几
    //    int weekOfYear = time.get(Calendar.WEEK_OF_YEAR);    //得到日期为年的第几周
    //    int weekOfMonth = time.get(Calendar.WEEK_OF_MONTH);    //得到日期为月的第几周
     
        private static final String getToday = time.get(Calendar.YEAR)+"-"+(time.get(Calendar.MONTH)+1)+"-"+time.get(Calendar.DAY_OF_MONTH)+"-";
     
        private static final String filePath = "C:\Documents and Settings\Administrator\workspace\Movision_script\logs\"+getToday+"log.html";
     
        //写入文件
        public void toLog(String message){
            StackTraceElement stack[] = (new Throwable()).getStackTrace();
            StackTraceElement s = stack[1];
     
            String headerMessage = s.getClassName()+"."+s.getMethodName()+"()"+"★LineNum:"+s.getLineNumber()+"<br />★Message:&nbsp;&nbsp;&nbsp;&nbsp;";
     
            headerMessage = addDateTimeHeader(headerMessage);
            message = headerMessage + message + "<br />========================================================================================================================<br /><br />";
     
            FileWriter fw = null;
            File file = null;
     
            try{
                file = new File(filePath);
                fw = new FileWriter(file,true);
                fw.write(message);
            }catch(IOException ie){
                ie.printStackTrace();
            }finally{
                try{
                    fw.close();
                }catch(IOException ie){
                    ie.printStackTrace();
                }
            }
        }
     
        @SuppressWarnings("deprecation")
        public String addDateTimeHeader(String headerMessage) {
            String dateTimeHeader = new Date().toLocaleString()+"★";
            return dateTimeHeader += headerMessage;
        }
     
     
    //    public static void main(String args[]){
    //        ToLog log = new ToLog();
    //        String message = "这只是测试";
    //        log.toLog(message);
    //    }
    }
    View Code

    原文:http://www.ostest.cn/archives/87

  • 相关阅读:
    冒泡排序
    题6 字典转数组 修改 大美女
    题5数组 排序 修改 字典以字符串输出
    题4数组 删除 排序
    数组字典结合删除排序 描述器
    盘点世界上最怪异的编程语言: 这6种编程语言的出现,只是为了好玩?
    Linux“四”种软件包都安排上了!详细安装过程曝光
    又一名程序员被判刑了!百度92年程序员改当“审核员”,编写脚本违规“开绿灯”
    C++的三种继承方式:public,protected,private
    Linux下查询进程占用内存的5种方式!还有谁不会?
  • 原文地址:https://www.cnblogs.com/tomweng/p/4176580.html
Copyright © 2020-2023  润新知