java+selenium+testNG+excel 实现 web 网页的自动化测试

  1. webdriver的关键字从excel读取,这样测试人员只需要在excel中填写相关用例即可
  2. 前端微站和后台系统的用例可整合在同一excel中,这样可实现前端与后台的闭循环测试
  3. 除了一些基本的校验规则外,添加了微站数据库校验
 

接下来还是贴上一些相关代码

1. 可以设定多轮测试,每轮测试数据都不一样,测试数据来源于excel的sheet_2

/**设定测试轮次**/
public static void  main() {
    try{
        for(k=0;k<numTotal;k++){
            File file = new File("e:\data.xls");   //采用的是jxl.jar读取写入表格方式
            InputStream in = new FileInputStream(file);  //新建一可读取本地内容的文件
            Workbook workbook = null;
            workbook = Workbook.getWorkbook(in);  //获取本地可读取的文件
            mWorkBook =  workbook;              
            getExcel();
            Sheet1DataList.clear();

            /**获取cookies**/
            for (Cookie ck : driver.manage().getCookies()) {
                String CK = ck.getName() + "=" + ck.getValue() + ";";
                System.out.println("cookie:" + CK);
               // sendGet(CK);
            }           
        }
    }
2. 从excel获取webdriver关键字以及相关测试用例数据

private static void  getExcel() {
    try{        
        getTestSettingFromSheet1();
        getDataFromSheet2();
        Thread.sleep(1000);
        sqlDriver.findElement(By.name("auth[password]")).sendKeys("test@628");;
        sqlDriver.findElement(By.cssSelector("#content > form > p > input[type='submit']")).click();
        sql = sqlDriver.findElement(By.tagName("pre"));

        if(Sheet0MethodList.size() != Sheet0ItemList.size()){
            System.out.println("Input Sheet Value Wrong!!!!Please Check Your Sheet" );
        }

        for(int listId=0;listId<Sheet0ActionList.size();listId++){  
            System.out.println("Sheet0ActionList.size:" + Sheet0ActionList.size());
            System.out.println("OK,Begin Commit!!!" );
            Thread.sleep(500);  
            if(Sheet0PlatList.get(listId).equals("后台"))
                driver = backDriver;
            loginBtn = getMethods(Sheet0MethodList.get(listId),Sheet0ItemList.get(listId),driver); 
            String strCmd = Sheet0CheckList.get(listId);
            String strAct = Sheet0ActionList.get(listId);
            getAssert(strAct,strCmd,listId);
            //InputCmdId++;
        }   
    }
3.将测试结果保存到excel中

private static void getAssert(String getStrAct,String getStrCmd,int getListId){
    try{
        Workbook wb=Workbook.getWorkbook(new File("e:\data.xls"));   //获取本地路径的excel文件
        WritableWorkbook book= Workbook.createWorkbook(new File("e:\data.xls"),wb);   //将本地已存在的可读文件转成可写文件
        WritableSheet sheet0_1=book.getSheet(0);
        if(getStrAct.equals("frame")){
            Thread.sleep(1000);
            driver.switchTo().frame(loginBtn);
        }

        if(getStrAct.equals("back"))
            driver.navigate().back();

        if(getStrCmd.equals("输入值获取")){
            Thread.sleep(1000);
            String text = Sheet1DataList.get(getInputCmdId);
            System.out.println("SenKeys:"+text);
            loginBtn.sendKeys(text);    
            Thread.sleep(1000); 
            if(loginBtn.getAttribute("value").equals(text)){  
                System.out.println("成功numTotal :" + numTotal);
                sheet0_1.addCell(new Label(10+numTotal+k,getListId+1,"true"));   
                Cell AI = sheet0_1.getCell(10+numTotal+k,getListId+1);
                String strAI = AI.getContents();
                System.out.println(">>>>>>>>>>>>" + strAI);
            }
            else{
                System.out.println("失败 numTotal:" + numTotal);
                sheet0_1.addCell(new Label(10+numTotal+k,getListId+1,"false")); 
            }   
            getInputCmdId++;
        }

        if(getStrCmd.equals("文本校验")){
            loginBtn.click();
            Thread.sleep(1000);
            isContentAppeared(driver,Sheet0ReseltList.get(clickId));
            System.out.println("status:" + status); 
            String clickResult = String.valueOf(status);
            sheet0_1.addCell(new Label(10+numTotal+k,getListId+1,clickResult));     
            clickId++;
        } 
        if(getStrCmd.equals("数据库校验")){
            String currentUrl = driver.getCurrentUrl();
            System.out.println("当前页面url---:" + currentUrl); 
            String[] urlList = currentUrl.split("\/");  
            String[] urlArry = urlList[urlList.length-1].split("\.");  
            String orderId = urlArry[0];
            System.out.println("订单ID号:" + orderId);
            sql.clear();
            sql.sendKeys("select * from order_info where order_id = " + orderId);
            sqlDriver.findElement(By.cssSelector("#form > p:nth-child(2) > input[type='submit']:nth-child(1)")).click();
            String sqlStr = "无数据";
            isContentAppeared(sqlDriver,sqlStr);
            System.out.println("status:" + status); 
            String clickResult = String.valueOf(status);
            if(clickResult.equals("false")){
                clickResult = "true";                               
            }else{
                clickResult = "false";                              
            }
            sheet0_1.addCell(new Label(10+numTotal+k,getListId+1,clickResult)); 
            Thread.sleep(1000);             
            loginBtn.click();

          //  clickId++;
        } 

        book.write(); 
        book.close();
    }
原文地址:https://www.cnblogs.com/yunman/p/7891083.html