web项目自动化测试方案预研
一、 网上方案整理
Watir、Watir-Webdriver、Selenium2、QTP区别
Waitr与Watir-WebDriver有什么区别?
Watir是非常优秀的一款自动化测试工具。其使用ruby作为脚本语言进行开发,能够在ie上实现元素定位、操作等自动化任务;
Watir WebDriver是Selenium WebDriver的一个封装。简单来说如果selenium webdriver是手机上的安卓系统,那么watir webdriver就是MIUI。watir webdirver就是将selenium webdriver包装了一下,使得selenium webdriver的api更加的友好。当然watir webdriver也不是毫无根据的对selenium webdriver进行封装,watir webdriver使用了watir的api组织形式对selenium webdriver进行封装,这样watir的代码跟watir webdriver的代码看上去就很”相似”了。这也是大家无法分辨watir与watir webdriver区别的原因。
watir webdriver相比较watir有如下的一些优点:
watir webdriver支持多浏览器, 而watir只支持ie
watir webdriver支持html5, 而在这方面watir不太明确
watir webdriver对弹出框(js alert confirm)的处理更加友好
watir webdriver支持移动设备,如iPhone和androrid
QTP和watir的区别是什么?
首先最明显的区别是:QTP是商业工具,其不是免费的;而watir是开源的测试工具,使用免费。
QTP支持脚本的录制,而watir不可以;
QTP的脚本语言是vbscript,而watir使用ruby进行脚本的开发;
QTP上手很容易,一般测试人员哪怕不会脚本语言都可以通过QPT录制回放脚本来进行用例的开发;相对来说,watir则需要一定的代码基础;
QTP对IE和Firefox都有支持,但是watir只支持IE(尽管firewaitr支持firefox,但是工具目前更新速度不快,可以忽略);
QTP是有软件界面的,而watir只是一个代码库;
那么我应该选择QTP还是watir?
如果预算允许且自动化测试对浏览器的兼容性要求不高的话是可以选择QTP的;
如果预算有限,但是项目只要求支持IE的话建议选择watir,学好watir测试人员日后的发展有一定的好处;
如果预算有限,项目又要求支持多浏览器,那么推荐使用watir webdriver;
我应该选择watir webdriver还是selenium webdriver?
从本质上说selenium webdriver 和 watir webdriver是没有任何区别的,就跟中国男足输1个和输10个是没有任何分别一样。
从笔者的经验上来说,watir webdriver的api更加的丰富和友好,如果你可以使用ruby作为开发语言的话,强烈推荐watir webdriver。
如果你的项目要求你使用java javascript之类的语言,那么你只能选择selenium webdriver了。
我是新手,这么多测试工具我该选择哪一个作为入门的学习工具呢?
如果你有决心有时间的话,那么推荐watir作为web测试的入门工具,原因是你可以通过watir学习到ruby,js,html,dom等一系列的知识;然后再转watir webdriver 甚至是selenium webdriver,学习曲线是相对平滑的;
如果你有决心但没时间却又急于求职的话,那么用熟QTP也是一个捷径。
selenium和webdriver的关系是什么?
webdriver是selenium2的一部分;
webdriver提供了多浏览器间统一的api,并将会持续更新,而selenium1将不再维护;
selenium2 = webdriver + selenium1
webdriver比selenium强在哪儿?
wd的api比se更加的面向对象,更加友好;
wd解决了se的软肋同源问题;
wd多浏览器间的行为更加一致;
wd支持iphone和安卓;
se1不再更新,而webdriver社区非常活跃。
作为新人,我想学习脚本语言,我该从哪一门开始呢?
如果你想做web方面的自动化而又想选择一门脚本语言开始的话,笔者推荐javascript。因为js配合html能做出多种效果,能够给让新人很快的获得成就感。另外前端人员目前相对紧缺,学好js无疑能够让你的身价有一定的增加。
如果你只是想学一门脚本语言,那么建议学习python,python的理念是做1件事件从来只有一种方法,尽管没有选择,但是至少也不会混乱和迷惑。另外python社区非常活跃,氛围很好。
如果你想学习watir和waitr webdriver,那么就从ruby开始。ruby入门容易精通难,而且经济价值没有py和js那么立竿见影。
总是脚本语言殊途同归,修行还是要看个人。
摘自百度文库
http://wenku.baidu.com/view/4f78889fe53a580216fcfe81.html
二、 组件测试
1. Selenium2
a) 工具下载地址:
http://docs.seleniumhq.org/download/
b) Maven配置
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.43.0</version>
</dependency>
c) Test code
package seleniumTest.seleniumTest;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
/**
* Hello world!
*
*/
public class App {
public static void main(String[] args) {
System.out.println("Hello World!");
// 如果你的 FireFox 没有安装在默认目录,那么必须在程序中设置 //
System.setProperty("webdriver.firefox.bin",
"D:\\ProgramFiles\\Mozilla Firefox\\firefox.exe");
// 创建一个 FireFox 的浏览器实例
WebDriver driver = new FirefoxDriver();
// 让浏览器访问 Baidu
driver.get("http://www.baidu.com");
// 用下面代码也可以实现
// driver.navigate().to("http://www.baidu.com");
// 获取 网页的 title
System.out.println("1 Page title is: " + driver.getTitle());
// 通过 id 找到 input 的 DOM
WebElement element = driver.findElement(By.id("kw"));
// 输入关键字
element.sendKeys("zTree");
// 提交 input 所在的 form
element.submit();
// 通过判断 title 内容等待搜索页面加载完毕,Timeout 设置10秒
// new WebDriverWait(driver, 3)).until(new ExpectedCondition<Boolean>() {
// public Boolean apply(WebDriver d) {
// return d.getTitle().toLowerCase().endsWith("ztree");
// }
// });
// 显示搜索结果页面的 title
System.out.println("2 Page title is: " + driver.getTitle());
// 关闭浏览器
//driver.quit();
}
}
d) 右键运行
e) 下载火狐录制插件,辅助生成java代码:
2. waitr webdriver
a) 下载地址:
http://rubyinstaller.org/downloads/
b) 测试安装:
- 在cmd终端输入gem list
- 列表中有watir-webdriver (0.6.11)
- 新建testRugy.rb文件,输入文本:
require "watir-webdriver"
puts "Open IE..."
ie= Watir::Browser.new
ie.goto("http://www.baidu.com")
puts "IE is opened - enjoy it :)"
sleep 2
puts "搜索淘宝"
ie.text_field(:name => 'wd').set '淘宝'
ie.button(:value => '百度一下').click
4. 然后在cmd终端执行ruby testRuby.rb
c) 用WatirRecorder++工具录制,该工具可以通过实际操作生成Ruby代码,起到辅助的作用;
工具下载地址:
http://www.hanselman.com/blog/content/binary/WatirRecorder_Setup_lite.msi
需要.net framework 1.1:
http://www.cr173.com/soft/3553.html#address
三、 推荐方案
通过上面资料分析,结合项目当前选架构选Selenium2的Java版本做自动化测试组件更合适;直接Maven引入包就可以写测试代码,支持jUnit测试。
web项目自动化测试方案预研的更多相关文章
- selenium+java+eclipse web项目自动化测试环境搭建
一.java的安装与环境配置 1.下载JDK(Java Development Kit),下载地址 www.oracle.com 2.安装jdk(傻瓜式安装) 3.安装完成后,配置环境变量,步骤: ( ...
- 基于spring的web项目启动时预加载数据到ServletContext
1.要在web启动时预加载数据到ServletContext,实现方法有很多,一种比较简单的方案就是: 1)新建一个bean,定义其初始化方法: <bean id="beanId&qu ...
- 第三方页面嵌入到web项目的方案 之 使用iframe嵌入
有些项目中可能会遇到这样的需求, 需要在一个项目中嵌入其他的项目的页面或者功能.并且需要这两个页面之间能够进行交互. 本文主要介绍如何实现这种第三方应用的嵌入, 主要有以下几个方向: 1.iframe ...
- (转载)JWebUnit做Web项目自动化测试
原址:http://blog.csdn.net/plainfield/archive/2007/07/02/1675546.aspx JwebUnit加构在HttpUnit上,实际上也可以这么说是Ht ...
- MySQL高可用读写分离方案预研
目前公司有需求做MySQL高可用读写分离,网上搜集了不少方案,都不尽人意,下面是我结合现有组件拼凑的实现方案,亲测已满足要求,希望各位多提建议 :) 一. 网上方案整理(搜集地址不详...) 1 ...
- 基于node-webkit的web项目打包方案
下载node-webkit https://github.com/rogerwang/node-webkit 找到Downloads这一小节,然后下载对应平台的node-webkit预编译包.(为了介 ...
- web项目超时方案
1. 场景描述 平台使用的Greenplum(内核是postgresql8.2)集群存储大数据量数据(每天一个表大概3亿),因为数据量比较大,所以在使用上有些限制,一是操作限制:二是不限制,但是到一定 ...
- JAVAWeb项目实现在线预览、打开office文件
Web项目实现在线预览浏览word.ppt.excel文档方法 调用以下链接 https://view.officeapps.live.com/op/view.aspx?src=你的文档绝对路径 这里 ...
- 【转贴】 Flex 预编译处理 与 手机项目、Web项目、Air项目自由转换
原文连接: http://bbs.9ria.com/forum.php?mod=viewthread&tid=263350#lastpost 由于这个论坛不稳定,所以转到这里来,这个帖子蛮有用 ...
随机推荐
- pap与chap协议
1.pap:直接在网络上发送密码明文 2.chap: 网络上发送的是密码的密文;server给client发一段随机数(challenge),client利用随机数对密码进行加密,将用户名和加密后的密 ...
- winform 自定义控件以及委托事件的使用
源代码:http://files.cnblogs.com/files/qtiger/%E8%AE%A1%E7%AE%97%E5%99%A8%E5%AE%89%E8%A3%85%E5%8C%85%E4% ...
- mariadb一些命令介绍及mariadb架构图和索引
mariadb> SHOW GLOBAL VARIABLES; 全局变量影响服务器的全局操作 mariadb> SHOW [SESSION] VARIABLES; 客户端变量,只对当前会话 ...
- php分页代码实例
$result = "<div class=\"page-num\"><ul class=\"fn-clear\">" ...
- php生成随机字符串和验证码的类
网上有很多的php随机数与验证码的代码与文章,真正适用的没有几个. 索性自己搞一个吧. 开始本节的php教程 吧,以下代码的实现,主要做到可以很好区分一个get_code(),另一个create_ch ...
- Android图表
最近需要用到Android里面的折现图,因此在这方面也去做了一些调研.总体发现Android对报表的支持还是非常好的.总体上去研究了两个实现方案,一个是利用Android提供的的AChartEngin ...
- IOS学习:在工程中添加百度地图SDK
1.将下载下来的sdk中的inc文件夹.mapapi.bundle.libbaidumapapi.a添加到工程中,其中libbaiduapi.a有两个,一个对应模拟器一个对应真机,导入方法如下: 第一 ...
- 实战Django:官方实例Part6
我们终于迎来了官方实例的最后一个Part.在这一节中,舍得要向大家介绍Django的静态文件管理. 现在,我们要往这个投票应用里面添加一个CSS样式表和一张图片. 一个完整的网页文件,除了html文档 ...
- DrawTool多重笔之前奏 => 通过InkAnalyzer实现图形识别
这里要介绍的是通过InkAnalyzer来实现简单图形的识别,例如圆,椭圆,正方形,三角形等,当然你也可以通过扩展来实现自定义图形的识别,在使用InkAnalyzer前,你需要引用IAWinFX.dl ...
- 推荐一个sqlce,sqllite等数据库管理工具
推荐一个sqlce,sqllite等数据库管理工具 下载地址: http://fishcodelib.com/files/DatabaseNet4.zip 支持sqlserver,sqlce, sql ...