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. WPF带cookie get/post请求网页,下载文件,图片,可保持会话状态

    直接写成啦一个MyNet.cs类方便使用 get/post方法请求 //get请求 MyNet.SendRequest("http://www.baidu.com"); //pos ...

  2. [cocos2dx笔记012]一定简易的UI配置类

    使用cocostudio能够装载编辑好的UI,可是过于复杂.特别是在加截UI后,发现触屏事件有些问题. 假设直接使用程序写死载入UI又过于麻烦.花点时间,添加了一个基于ini的UI配置类,眼下仅仅实现 ...

  3. 设计模式C++实现——组合模式

    模式定义: 组合模式同意你将对象组合成树形结构来表现"总体/部分"层次结构.组合能让客户以一致的方式处理个别对象以及对象组合. 这个模式可以创建一个树形结构,在同一个结构中处理嵌套 ...

  4. <% %> in html

    $(document).on('click', '.invoiceNumber', function () { var string = <%= StaticHelper.GetCurrentC ...

  5. CodeForces 660A

    Description You are given an array of n elements, you must make it a co-prime array in as few moves ...

  6. Sublime Text 2 界面主题 推荐 Flatland

    先搜索下THEME-FLATLAND 安装完后在preferences中选择settings-usr { "color_scheme": "Packages/Theme ...

  7. 项目中遇到的所有ECharts图表集合

    全放在了ECharts官网示例里面以后会一直往里面添加: https://gallery.echartsjs.com/explore.html?u=bd-2133619855&type=wor ...

  8. C# 获取操作系统相关信息

    1.获取操作系统版本(PC,PDA均支持) Environment.OSVersion 2.获取应用程序当前目录(PC支持) Environment.CurrentDirectory 3.列举本地硬盘 ...

  9. vue-cli 安装

    1    node 下载      http://nodejs.cn/download/ 安装 2  npm install vue-cli -g 3  vue init <template-n ...

  10. Computer Vision的尴尬

    原文: Computer Vision是AI的一个非常活跃的领域,每年大会小会不断,发表的文章数以千计(单是CVPR每年就录取300多,各种二流会议每年的文章更可谓不计其数),新模型新算法新应用层出不 ...