Selenium2.0+TestNG+Ant+Jenkins自动化测试浅尝
当前常用自动化测试工具
- Web自动化测试工具:QTP 、selenium等
- 性能自动化测试工具:loadrunner、jmeter等
- 接口自动化测试工具:SoapUI、postman等
- 手机自动化测试工具:robotium、appium等
自动化脚本录制
Selenium 1.0包括:selenium IDE、selenium Grid、selenium RC三部分。
Selenium IDE 是嵌入到Firefox浏览器中的一个插件,实现简单的浏览器操作的录制与回放功能
IDE录制的脚本可以可以转换成多种语言,从而帮助我们快速的开发脚本。

录制界面

导出脚本

Selenium2.0+TestNG+Ant+Jenkins自动化测试框架简介
- Selenium2.0 = Selenium1.0 + WebDriver
- TestNG是一个开源自动化测试框架,灵感来源于Junit,比Junit更强大
- ANT使用XML 文件来实现管理脚本的功能。默认的文件是build.xml
- Jenkins持续集成,结合Ant自动化构建,定时运行,发送测试报告邮件等
- Xslt美化Testng测试报告
环境搭建
- 第一步 安装JDK
- 第二步 安装Eclipse
- 第三步 在Eclipse中安装TestNG(http://beust.com/eclipse)
- 第四步 安装Ant(结合xslt美化测试结果,运行testng.xml,可选择性安装)
- 第五步 安装Jenkins
- 注意:谷歌驱动版本要和谷歌版本对应
- v2.29 v56-58
- v2.24 v52-54
TestNG安装
Eclipse Help ->Install New Software ,Add"http://beust.com/eclipse"

Ant安装
- 官方主页 http://ant.apache.org下载新版的ant
- 配置环境变量:如:PATH:%ANT_HOME%\bin
- 验证ant是否成功安装:开始->运行->cmd -> ant
- 如果出现如下内容,说明安装成功:Buildfile: build.xml does not exist!
Jenkins配置

元素定位
定位方法
driver.findElement(By.id(“id的值”));
driver.findElement(By.name(“name的值”));
driver.findElement(By.linkText(“链接的全部文字”));
driver.findElement(By.partialLinkText(“链接的部分文字”));
driver.findElement(By.cssSelector(“css表达式”));
driver.findElement(By.xpath(“xpath表达式”));
driver.findElement(By.className(“class属性”));
driver.findElement(By.tagName(“标签名称”));
元素常用操作
click();
sendkeys(String value);
clear();
getText();
getAttribute();
driver.get(String url) //浏览器跳转
driver.manage().window().maximize(); // 浏览器最大化 driver.navigate().to("http://www.baidu.com"); //浏览器跳转
driver.navigate().refresh(); // 刷新浏览器
driver.navigate().back(); // 浏览器后退
driver.navigate().forward(); // 浏览器前进
driver.quit(); // 浏览器退出
操作弹出框
Alert , Confirm,Prompt弹出框
driver.switchTo().alert().accept(); //点击确定
driver.switchTo().alert().dismiss(); //点击取消
driver.switchTo().alert().sendKeys();
操作windows弹出框
借助autoIt
滚动到顶
((JavascriptExecutor)driver).executeScript("document.documentElement.scrollTop=0");
滚动到底
((JavascriptExecutor)driver).executeScript("document.documentElement.scrollTop=10000");
模拟鼠标、键盘操作(Action类)
Actions action = new Actions(driver);
action.click(WebElement); //模拟鼠标点击
action.contextClick(WebElement); //模拟右键点击
action.doubleClick(WebElement); //模拟鼠标双击
action.moveToElement(WebElement); //鼠标移动到元素
actions.dragAndDrop(elementsource, elementtarget).perform();
action.sendKeys(); //模拟键盘输入
action.sendKeys(Keys.ENTER).perform(); //模拟键盘回车
action.sendKeys(Keys.CONTROL+"a").perform(); //使用ctrl+a全选
等待元素加载
强制等待
Thread.sleep();
隐式等待
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
总共等待10秒, 如果10秒后,元素还不存在,就会抛出异常 org.openqa.selenium.NoSuchElementException
显式等待
new WebDriverWait(chrome, 15).until(
ExpectedConditions.presenceOfElementLocated(By.cssSelector("css locator"))
);
处理Iframe中元素
dr.switchTo().frame("frameA"); // 进入 id 叫frameA 的 iframe
dr.switchTo().defaultContent(); // 回到主窗口
切换窗口
public void switchToWindow(String title) {
try {
String currentHandle = driver.getWindowHandle(); //返回当前的浏览器的窗口句柄
Set<String> handles = driver.getWindowHandles(); //返回当前的浏览器的所有窗口句柄
for (String handle : handles){
if(handle.equals(currentHandle)){
continue;
}else{
driver.switchTo().window(handle);
if (driver.getTitle().contains(title)){ break; }
else{ continue; }
}
}
} catch (NoSuchWindowException e) {
System.out.println("没有找到窗口!");
}
}
常见异常及解决方法
NoSuchElementException:检查页面元素的定位表达式是否正确,或尝试其他定位方式;查看页面是否加载延迟,设置等待时间;
NoSuchFrameException :检查元素是否frame里,是否已切换到元素的frame下,或切换回default content
ElementNotVisibleException:检查元素是否存在不可见属性的元素,可借助Javascript实现元素操作;检查是否操作速度过快,页面没加载出来
自动化测试结果的生成与美化


Selenium2.0+TestNG+Ant+Jenkins自动化测试浅尝的更多相关文章
- selenium+testng+ant+jenkins 手记
会不会搭建测试平台是一般测试工程师和高级测试工程师分水岭 ----tobecrazy 我们项目有现成的测试平台,使用的是selenium grid+testng+ant+jenkins+VM 但是我平 ...
- 也谈自动化平台的搭建,另附高大上的名字---无人值守定时巡检系统(selenium+testng+ant+jenkins)
最近公司新项目改版,由于没有运维,开发则负责上线任务,并且都是手动上线,并行的项目多了,分支混乱,经常导致B项目上线覆盖A项目,导致系统不定时出现异常,老板知道了便扣了大家的绩效,作为测试这边必须想个 ...
- Jenkins环境搭建(2)-搭建jmeter+ant+jenkins自动化测试环境
一直想在持续集成方向学习并研究一番,近期正准备结合jmeter+ant+jenkins做自动化接口测试,在学习的同时,正好实践一番,毕竟实践才是真理. 在搭建jmeter+ant+jenkins环境有 ...
- UI自动化测试篇 :webdriver+ant+jenkins自动化测试实践
http://www.cnblogs.com/chengtch/p/6063360.html 前面基本弄清楚了webdriver+ testng 的测试环境部署,现在这里记录一下结合ant及jenki ...
- testng+ant+jenkins持续集成UI自动化
一.环境搭建 1. 安装testNG插件到eclipse. -) 选择菜单 Help /Software updates / Find and Install. -) 点击add button然后在l ...
- Linux下搭建Jmeter+Ant+Jenkins自动化测试框架
前言 在之前的文章中,我们学习了通过Ant调用Jmeter脚本生成HTML测试报告,但未实现自动执行脚本生成报告,同时生成的报告是在Linux下,查看报告很不方便.因此,我们将结合Jenkins来进一 ...
- 转:Selenium2.0 click()不生效的解决办法
除了http://573301735.com/?p=5126讲的,昨天又发现一个让我1个小时生不如死的问题,就是使用两个不同的配置文件来初始化driver,findelement方法获取到的坐标居然不 ...
- 自动化测试框架【linux版】:JMeter + Ant + Jenkins
前提条件:linux安装了jmeter.ant.jenkins 安装方法参考汇总目录中对应的博文 截图看不清的,可以调大浏览器倍数看 jenkins驱动ant执行,ant驱动jmeter执行 ant调 ...
- 集成 Jenkins 和 TestNG 实现自助式自动化测试平台
背景介绍 在软件业十分成熟的今天,敏捷(Agile)开发在业界日益流行,而面临的挑战也日益增多,不断变化的用户需求.缩短的开发周期.频繁的部署上线.复杂的产品架构和团队组织,如何继续保证软件的质量是一 ...
随机推荐
- jQuery JS 入门记录
1.类型转换 .toString() 转字符串 . parseInt() parseFloat() 强制转换 数字型(Number) 1.声明 var i = 1; var i = new Numbe ...
- Java企业微信开发_06_素材管理之上传本地临时素材文件至微信服务器
一.本节要点 1.临时素材有效期 media_id是可复用的,同一个media_id可用于消息的多次发送(3天内有效) 2.上传文件时的http请求里都有啥 具体原理可参看: 为什么上传文件的表单需要 ...
- Android: 利用SurfaceView绘制股票滑动直线解决延迟问题
1.背景介绍 最近项目要绘制股票走势图,并绘制能够跟随手指滑动的指示线(Indicator)来精确查看股票价格和日期.如下图所示: 上图中的那条白色直线就是股票的指示线,用来跟随手指精确确定股票的时间 ...
- OpenCV——黑白调整
参考算法: 闲人阿发伯的博客 // define head function #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUD ...
- ACM学习历程—Hihocoder 1290 Demo Day(动态规划)
http://hihocoder.com/problemset/problem/1290 这题是这次微软笔试的第三题,过的人比第一题少一点,这题一眼看过去就是动态规划,不过转移方程貌似不是很简单,调试 ...
- ACM学习历程—UESTC 1215 Secrete Master Plan(矩阵旋转)(2015CCPC A)
题目链接:http://acm.uestc.edu.cn/#/problem/show/1215 题目大意就是问一个2*2的矩阵能否通过旋转得到另一个. 代码: #include <iostre ...
- POJ2069:Super Star
我对模拟退火的理解:https://www.cnblogs.com/AKMer/p/9580982.html 我对爬山的理解:https://www.cnblogs.com/AKMer/p/95552 ...
- POJ3126Prime Path(BFS)
#include"cstdio" #include"queue" #include"cstring" using namespace std ...
- 【转】 Pro Android学习笔记(七十):HTTP服务(4):SOAP/JSON/XML、异常
目录(?)[-] SOAP JSON和XMLPullParser Exception处理 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件,转载须注明出处:http://blog. ...
- java注解的基本知识
1: 注解:Annotation是一种应用于类.方法.参数.变量.构造器及包生命中的特殊修饰符,是一种由JSR-175标准选择用来描述代码的元数据. Java中如下的4种注解,专门负责新注解的创建: ...