zoukankan      html  css  js  c++  java
  • 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();
        }
  • 相关阅读:
    QDir路径的测试与创建-QT
    QGridLayout--01
    第42月第18天 iOS匹配特殊字符 markedTextRange
    第42月15天 framework静态库依赖framework静态库
    第42月第13天 top命令 load average dispatch_group
    第42月第11天 curl post 预约码设计
    第42月第5天 vux 5大功能
    第42月第5天 Swift Playgrounds Mac 版上线 app强制更新
    第42月第4天 Xcode11 打包失败 IPA processing failed
    第42月第3天 PlatformVersionAtLeast armv7 armv7s arm64 podspec icon在线
  • 原文地址:https://www.cnblogs.com/yunman/p/7891083.html
Copyright © 2011-2022 走看看