好久没发过帖子了,在狂沙大神的指导下完成了 appium 关键字驱动自动化测试,可能设计方法有所缺陷,欢迎指正,另外尤其是断言方面欠缺比较多。
1、将 appium 的关键字存放在 excel 表中。
2、然后通过 jxl 读取 excel 表的关键字进行元素查找、执行等相关动作。
3、测试相关数据存放在 excel 另一 sheet 表中,主表和子表根据测试用例 ID 号进行关联。
4、用例断言只要是采用截图对比以及元素文本获取对比的方式。
5、最后将断言结果写在 excel 相应的表格中。
先贴张 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)); //将相应的断言结果插入到主表对应的位置