java+selenium+testNG+excel 实现 web 网页的自动化测试
- 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();
}
java+selenium+testNG+excel 实现 web 网页的自动化测试的更多相关文章
- Java+Selenium+Testng自动化测试学习(二)
Java+Selenium+TestNG自动化测试框架整合 1.简化代码 封装一个定位元素的类,类型为ElementLocation package com.test; import org.open ...
- Java+Selenium 3.x 实现Web自动化 - 1.自动化准备
(一)自动化准备 说明:本文主要记录了基于公司现有项目(一个电子商务平台),从0开始实现UI自动化的历程.从准备阶段,部分内容直接省略了基础知识,一切以最终做成自动化项目为目标,难免会有晦涩之处.文章 ...
- 接口测试 java+httpclient+testng+excel
最近项目不忙,研究了下java实现接口自动化,借助testng+excel实现数据驱动 目前只用post方式测试,返回结果列没有通过列名去找 另外,请求参数是转义之后的,接口之间的依赖也是个问题,批量 ...
- java+Selenium+TestNg搭建自动化测试架构(1)实现代码和数据的分离
1.主要介绍介绍Java+Selenium+POM的自动化测试框架的搭建,第一个首先实现代码和账号URL等信息的分离.第二点支持跨浏览器,通过读取配置文件的方式实现. 1)将账号URL等信息添加在pr ...
- Java+Selenium 3.x 实现Web自动化 - Maven打包TestNG,利用jenkins执行测试
1. Jenkins本地执行测试 or 服务器端执行测试 测试代码计划通过jenkins执行时,通过网上查询各种教程,大多数为本地执行测试,由此可见,本地执行是大多数人的选择. 经过探讨,最终决定采用 ...
- java+Selenium+TestNg搭建自动化测试架构(3)实现POM(page+Object+modal)
1.Page Object是Selenium自动化测试项目开发实践的最佳设计模式之一,通过对界面元素的封装减少冗余代码,同时在后期维护中,若元素定位发生变化,只需要调整页面元素封装的代码,提高测试用例 ...
- java+Selenium+TestNg搭建自动化测试架构(2)实现跨浏览器功能
1.切换浏览器类:其中包含了切换浏览器的方法,以及关闭浏览器,设置等待时间,以及重写的断言方法 package com.rrx.framework; import java.io.IOExceptio ...
- java + selenium + testng实现简单的UI自动化
新建Maven项目,添加需要的依赖 1.新建一个Maven项目 2.在pom.xml中添加需要的依赖,这里只要selenium和testng就行 <!-- https://mvnreposito ...
- Java&Selenium&TestNG&ZTestReport 自动化测试并生成HTML自动化测试报告
一.摘要 本篇博文将介绍如何借助ZTestReport和HTML模版,生成HTML测试报告的ZTestReport 源码Clone地址为 https://github.com/zhangfei1984 ...
随机推荐
- 转:APP测试总结
- Linux命令(七)——网络配置和网络通信
在使用网络前,需要对linux主机进行基本的网络配置,配置后可以使该主机能够同其他主机进行正常的通信. 一.网络配置 1.ifcfg-ethn网络配置文件 所有的网络接口配置文件均存放在/etc/sy ...
- POJ2576 Tug of War 二维背包
题目大意 一群人拔河,给出每个人的重量,要求两队人数之差不超过1人,且每队总重量之差最小. 思路 选出严格总人数一半(或+1)的人为一队,在该队重量不超过所有人总重量一半的情况下,使其重量最大. 人数 ...
- Juniper交换机维护
Juniper交换机维护操作之一: 1.1 交换机启动和关闭 1.1.1 重新启动 1. 使用具有足够权限的用户名和密码登陆CLI命令行界面. 2. 在提示符下输入下面的命令: use ...
- python笔记:字符编码
ASCII编码 知识点:计算机中最小的单位是bit,bit就咱们常说一位二进制,一位二进制要么是0 要么是 1.但是bit这个单位太小了,我们用字节(byte)来表示.换算的规则如下: 8b = 1B ...
- WPF全球化与本地化
当一个App需要推出多语言版本时,就需要使用到[全球化与本地化]服务. 原理及过程 资源文件中包含了所有的控件信息,通过导出这些控件信息,修改其对应的相关属性(比如TextBlock的Text属性)的 ...
- Android之MVP架构
MVP(Model View Presenter)模式是由MVC模式发展而来的,在如今的Android程序开发中显得越来越重要.本篇文章简单讨论了MVP模式的思想. 啥是MVP MVP模式的主要思想是 ...
- 多线程之HttpClient
在程序用调用 Http 接口.请求 http 资源.编写 http 爬虫等的时候都需要在程序集中进行 Http 请求. 很多人习惯的 WebClient.HttpWebRequest 在 TPL 下很 ...
- mybatis 高级映射和spring整合之高级映射(4)
mybatis 高级映射和spring整合之高级映射 ----------------学习结构-------------------- 0.0 对订单商品数据模型进行分析 1.0 高级映射 1.1 一 ...
- 8) 十分钟学会android--Activity的生命周期之停止与重启
恰当的停止与重启我们的activity是很重要的,在activity生命周期中,他们能确保用户感知到程序的存在并不会丢失他们的进度.在下面一些关键的场景中会涉及到停止与重启: 用户打开最近使用app的 ...