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();
}

java+selenium+testNG+excel 实现 web 网页的自动化测试的更多相关文章

  1. Java+Selenium+Testng自动化测试学习(二)

    Java+Selenium+TestNG自动化测试框架整合 1.简化代码 封装一个定位元素的类,类型为ElementLocation package com.test; import org.open ...

  2. Java+Selenium 3.x 实现Web自动化 - 1.自动化准备

    (一)自动化准备 说明:本文主要记录了基于公司现有项目(一个电子商务平台),从0开始实现UI自动化的历程.从准备阶段,部分内容直接省略了基础知识,一切以最终做成自动化项目为目标,难免会有晦涩之处.文章 ...

  3. 接口测试 java+httpclient+testng+excel

    最近项目不忙,研究了下java实现接口自动化,借助testng+excel实现数据驱动 目前只用post方式测试,返回结果列没有通过列名去找 另外,请求参数是转义之后的,接口之间的依赖也是个问题,批量 ...

  4. java+Selenium+TestNg搭建自动化测试架构(1)实现代码和数据的分离

    1.主要介绍介绍Java+Selenium+POM的自动化测试框架的搭建,第一个首先实现代码和账号URL等信息的分离.第二点支持跨浏览器,通过读取配置文件的方式实现. 1)将账号URL等信息添加在pr ...

  5. Java+Selenium 3.x 实现Web自动化 - Maven打包TestNG,利用jenkins执行测试

    1. Jenkins本地执行测试 or 服务器端执行测试 测试代码计划通过jenkins执行时,通过网上查询各种教程,大多数为本地执行测试,由此可见,本地执行是大多数人的选择. 经过探讨,最终决定采用 ...

  6. java+Selenium+TestNg搭建自动化测试架构(3)实现POM(page+Object+modal)

    1.Page Object是Selenium自动化测试项目开发实践的最佳设计模式之一,通过对界面元素的封装减少冗余代码,同时在后期维护中,若元素定位发生变化,只需要调整页面元素封装的代码,提高测试用例 ...

  7. java+Selenium+TestNg搭建自动化测试架构(2)实现跨浏览器功能

    1.切换浏览器类:其中包含了切换浏览器的方法,以及关闭浏览器,设置等待时间,以及重写的断言方法 package com.rrx.framework; import java.io.IOExceptio ...

  8. java + selenium + testng实现简单的UI自动化

    新建Maven项目,添加需要的依赖 1.新建一个Maven项目 2.在pom.xml中添加需要的依赖,这里只要selenium和testng就行 <!-- https://mvnreposito ...

  9. Java&Selenium&TestNG&ZTestReport 自动化测试并生成HTML自动化测试报告

    一.摘要 本篇博文将介绍如何借助ZTestReport和HTML模版,生成HTML测试报告的ZTestReport 源码Clone地址为 https://github.com/zhangfei1984 ...

随机推荐

  1. sikuli_ide打开提示没有对应的javaw

    对于sikuli,需要安装32位的jdk且不能高于1.7的版本 对于64位系统的C盘,Program Files文件夹是64位的,Program File(x86)文件夹是32位的 需要安装一个32位 ...

  2. Linux 下的时间编程总结

    在嵌入式编程中中.常常须要输出系统的当前时间.计算程序的运行时间.使用计时器等.近期也做了不少关于时间的操作.今天就认真总结一下,部分内容是在网上看到的.自己经过验证总结出来. 1.时间的类型 1.格 ...

  3. luogu1120 小木棍【数据加强版】 暴力剪枝

    题目大意 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50.现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度.给出每段小木棍的长度,编程帮 ...

  4. HDU3496 Watch the Movie 背包

    题目大意:给你n张电影门票,但一次只可以买m张,并且你最多可以看L分钟,接下来是n场电影,每一场电影a分钟,b价值,要求恰好看m场电影所得到的最大价值,要是看不到m场电影,输出0. 三个限制: 选电影 ...

  5. Windows 10 MBR转GPT分区

    注意:分区有风险,操作需谨慎,提前备份好数据. 说明: 1.有“系统保留”的分区,可以直接删除,用来做GPT分区的UEFI启动分区. 2.没有“系统保留”分区的,需要在分区最前面调整分区大小,留出30 ...

  6. Windows下搭建ffmpeg+VS2008开发环境详细教程【转】

    本文转载自:http://www.voidcn.com/article/p-vxdntdgc-bkq.html 由于个人是从事音视频开发相关的工作,所以也把自己的一些过程写下来,方便大家以及自己查看, ...

  7. ASP.NET Razor - C# Variables

    http://www.w3schools.com/aspnet/razor_cs_variables.asp Variables are named entities used to store da ...

  8. Cache操作类

    封装类: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sys ...

  9. 聚类(三)FUZZY C-MEANS 模糊c-均值聚类算法——本质和逻辑回归类似啊

    摘自:http://ramsey16.net/%E8%81%9A%E7%B1%BB%EF%BC%88%E4%B8%89%EF%BC%89fuzzy-c-means/ 经典k-均值聚类算法的每一步迭代中 ...

  10. 自然语言处理(NLP)书籍资源清单

    1. 书籍 入门: <Speech and Language Processing>Dan Jurafsky ,James H. Martin 2. blog及项目