APPium实现关键字驱动的自动化测试

在狂沙大神的指导下完成了appium关键字驱动自动化测试,可能设计方法有所缺陷,欢迎指正,另外尤其是断言方面欠缺比较多。

好久没发过帖子了,在狂沙大神的指导下完成了appium关键字驱动自动化测试,可能设计方法有所缺陷,欢迎指正,另外尤其是断言方面欠缺比较多。

设计思路

1、将appium的关键字存放在excel表中。
2、然后通过jxl读取excel表的关键字进行元素查找、执行等相关动作。
3、测试相关数据存放在excel另一sheet表中,主表和子表根据测试用例ID号进行关联。
4、用例断言只要是采用截图对比以及元素文本获取对比的方式。
5、最后将断言结果写在excel相应的表格中。

先贴张excel的布局图吧!
APPium实现关键字驱动的自动化测试
接下来还是贴代码吧!

excel表关键字获取

File file = new File("e:\\data.xls");   //采用的是jxl.jar读取写入表格方式
    InputStream in = new FileInputStream(file);  //新建一可读取本地内容的文件
    Workbook workbook = null;
    workbook = Workbook.getWorkbook(in);  //获取本地可读取的文件
    mworkbook =  workbook;
    Sheet sheet0 = mworkbook.getSheet(0);   //获取第一个sheet表
    int rowLength0 = sheet0.getRows();  

    for(int k=0;k<2;k++){ //测试用例执行的遍数
        for(int i=1;i<rowLength0;i++){
            Cell FI = sheet0.getCell(5, i);  //获取sheet0表的第i行第5列
            String strFI = FI.getContents();  //获取该单元格的内容
            mstrFI = strFI;
          // 定位方式

            Cell GI = sheet0.getCell(6, i);
            String strGI = GI.getContents();   
            mstrGI = strGI;
           // 测试对象实体

            Cell HI = sheet0.getCell(7, i);
            String strHI = HI.getContents();
            mstrHI = strHI;
          // 操作方法 

            Cell AI = sheet0.getCell(0, i);
            String strAI = AI.getContents();
            mstrAI = strAI;
         // 测试用例ID

            Cell II = sheet0.getCell(8, i);
            String strII = II.getContents();
            mstrII = strII;

读取子表的测试数据

if(parameter.equals(mstrII)){      
  // System.out.println(i); 
   Sheet sheet1 = mworkbook.getSheet(1);   
   msheet1=sheet1;
   int rowLength1 = sheet1.getRows();
   for(int n=1;n<rowLength1;n++){
       Cell AJ = sheet1.getCell(0, n);  
       String strAJ_1 = AJ.getContents(); 
       String strAJ = parameter_1 + ":" + strAJ_1;
       if(strAJ.equals(mstrII)){   //根据测试用例ID将主表的测试用例与子表的测试数据进行关联
           m =n;
           int j;
           j=m+k;  //获取下一轮对应测试用例ID号的行值,K为执行测试用例的遍数
           mj=j;
           System.out.println("j"+j); 

           //如下为将j的行值存到list中,然后判断list中数据,如果元素相当则执行getsunlist(),如果不相当,则释放list,然后将参数初始化,并重新将数据添加到list中
           mList.add(j);  
           if (mList.size() > 1) { 
               for (int ii=0;ii<mList.size();ii++) {
                   for (int iii=ii+1;iii<mList.size();iii++) {
                       if (mList.get(iii) != mList.get(ii)){
                           // System.out.println("不等于");
                            mList.clear(); 
                            mList.add(j);
                            a=2;
                          // return;
                       }
                       break;  
                   }
               }
               getSublist();

           }
           else if (mList.size() == 1) {                            
               getSublist();
           }
           break;  //每读取完一次子表的测试数据后即跳出子表,回到主表继续寻找控件并执行相关动作
       } 
       else{
           continue;  //如果在子表没找到对应的测试ID号,则continue继续查找
       }
   }

将断言结果写入对应的表格位置

     //如下方法是将子表中各字段的断言结果存到list中有进行布尔运算后存到子表对应位置
     boolean b1= result1.equals("true") ? true : false;    //将子表string的值转换成布尔值
     mListC.add(b1);
     boolean b2=true;
     for(int c=0;c<mListC.size();c++){
         if(mListC.get(c)==false){
             b2=false;
         }
         else{
             b2=true;
         }   
     }
    String strb2;
    strb2 = String.valueOf(b2);
    sheet1_1.addCell(new Label(1,mj,strb2)); 
}

else{
    Thread.sleep(500);   
    getActions(mstrHI,null,driver);  //null为空测试数据,获取元素的执行动作
    getResult(driver);   //根据控件不同的执行动作做不同的断言方式
    sheet0_1.addCell(new Label(9+k,i,result));   //将相应的断言结果插入到主表对应的位置

,


35 个赞
举报

* 注:本文来自网络投稿,不代表本站立场,如若侵犯版权,请及时知会删除