- webdriver的關鍵字從excel讀取,這樣測試人員只需要在excel中填寫相關用例即可
- 前端微站和后台系統的用例可整合在同一excel中,這樣可實現前端與后台的閉循環測試
- 除了一些基本的校驗規則外,添加了微站數據庫校驗
接下來還是貼上一些相關代碼
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(); }