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 ...
随机推荐
- java 线程死锁的检测
java 线程死锁的检测 例子程序: import java.util.concurrent.CountDownLatch; import java.util.concurrent.Executo ...
- Linux - xshell 链接CentOS 设置高亮
默认是黑白的! 用了vim 指令还是黑白的. 两种途径设置,一种是通过Alt+P. 一种是选择配色方案来设置.
- [ZJOI 2010] 数字计数
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1833 [算法] 数位DP [代码] #include <algorithm&g ...
- [ASPX] DotLiquid-Asp.net模板引擎
以前用过一段时间的PHP,感觉非常不错,其中最让我难忘的就是Smarty模板引擎,当时就微微地想Asp.net里有没有像这样的模板引擎呢?不过由于之后的工作内容都用不到,或者说没有想到用模板,这想法也 ...
- ubuntu系统源的更新
以前没有注意,ubuntu的系统的源原来每次在GUI操作后都会追加在后面而不是覆盖,比如先添加了上海交大的源那么后来如果发现很慢下载不了,而这个包已经在apt-cache里面了,下次如果要instal ...
- Wannafly挑战赛25 A 因子 数学
题面 题意:令 X = n!,给定一大于1的正整数p,求一个k使得 p ^k | X 并且 p ^(k + 1) 不是X的因子,n,,p(1e18>=n>=1e4>=p>=2) ...
- 微信小程序蓝牙连接小票打印机
1.连接蓝牙 (第一次发表博客) 第一步打开蓝牙并搜索附近打印机设备// startSearch: function() { var that = this wx.openBluetoothAda ...
- AUTOCAD2013 以上利用ACCORECONSOLE+ SCR后台批量清理图纸
无意中浏览到南胜大神的博客,https://www.cnblogs.com/NanShengBlogs/p/10957489.html 受此启发,特意改装此方法用于批量清理图纸,效果极佳. 详细介绍详 ...
- Python基本数据类型之字符串str
字符串 定义:它是一个有序的字符的集合,用于存储和表示基本的文本信息,‘’或“”或‘’‘ ’‘’中间包含的内容称之为字符串 字符串的结构类型为'...' "..." "' ...
- 管窥python语法
刚接触python,mark下所见所得: 1.Python调用底层API,可在任何platform上运行,包括Windows.Mac.Unix: 2.用#符号对代码或语句进行注释,#后的代码不被编译: ...