一、  网上方案整理

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) 测试安装:

  1. 在cmd终端输入gem list
  2. 列表中有watir-webdriver (0.6.11)
  3. 新建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项目自动化测试方案预研的更多相关文章

  1. selenium+java+eclipse web项目自动化测试环境搭建

    一.java的安装与环境配置 1.下载JDK(Java Development Kit),下载地址 www.oracle.com 2.安装jdk(傻瓜式安装) 3.安装完成后,配置环境变量,步骤: ( ...

  2. 基于spring的web项目启动时预加载数据到ServletContext

    1.要在web启动时预加载数据到ServletContext,实现方法有很多,一种比较简单的方案就是: 1)新建一个bean,定义其初始化方法: <bean id="beanId&qu ...

  3. 第三方页面嵌入到web项目的方案 之 使用iframe嵌入

    有些项目中可能会遇到这样的需求, 需要在一个项目中嵌入其他的项目的页面或者功能.并且需要这两个页面之间能够进行交互. 本文主要介绍如何实现这种第三方应用的嵌入, 主要有以下几个方向: 1.iframe ...

  4. (转载)JWebUnit做Web项目自动化测试

    原址:http://blog.csdn.net/plainfield/archive/2007/07/02/1675546.aspx JwebUnit加构在HttpUnit上,实际上也可以这么说是Ht ...

  5. MySQL高可用读写分离方案预研

    目前公司有需求做MySQL高可用读写分离,网上搜集了不少方案,都不尽人意,下面是我结合现有组件拼凑的实现方案,亲测已满足要求,希望各位多提建议 :) 一.    网上方案整理(搜集地址不详...) 1 ...

  6. 基于node-webkit的web项目打包方案

    下载node-webkit https://github.com/rogerwang/node-webkit 找到Downloads这一小节,然后下载对应平台的node-webkit预编译包.(为了介 ...

  7. web项目超时方案

    1. 场景描述 平台使用的Greenplum(内核是postgresql8.2)集群存储大数据量数据(每天一个表大概3亿),因为数据量比较大,所以在使用上有些限制,一是操作限制:二是不限制,但是到一定 ...

  8. JAVAWeb项目实现在线预览、打开office文件

    Web项目实现在线预览浏览word.ppt.excel文档方法 调用以下链接 https://view.officeapps.live.com/op/view.aspx?src=你的文档绝对路径 这里 ...

  9. 【转贴】 Flex 预编译处理 与 手机项目、Web项目、Air项目自由转换

    原文连接: http://bbs.9ria.com/forum.php?mod=viewthread&tid=263350#lastpost 由于这个论坛不稳定,所以转到这里来,这个帖子蛮有用 ...

随机推荐

  1. VS2012环境设置

    一 先安装水晶报表 开发者和用户两种 YKCW6-BPFPF-BT8C9-7DCTH-QXGWC 保证完美激活!!! 激活码 一般网上的VS版本是使用版 要安装正版才能体验全部功能

  2. JS数组(Array)处理函数总结

    1.concat() 连接两个或更多的数组该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本.例如: <script type="text/javascript"&g ...

  3. What is the difference between differed processing mode and interactive mode?

     Every time you access and navigate through the fields on a page in PeopleSoft there are events such ...

  4. Knockout.Js官网学习(监控属性Observables)

    前言 1.创建一个ViewModel <script type="text/javascript"> //1.创建一个ViewModel var myViewModel ...

  5. AWS学习之EC2

    1.AWS简介 AWS(Amazon Web Services )提供了一整套云计算服务,让您能够构建复杂.可扩展的应用程序.如今,成千上万各种规模的客户都在使用这些云计算服务,它们涉及各个行业,包括 ...

  6. AppSetting ,connectionStrings配置节

    <appSettings> <!-- 当前使用的学校代码 --> <add key="DefaultCompanyID" value="cs ...

  7. object

    object对象 定义一个对象 var obj = {}; obj.name = 'Kate'; var obj = {name:'Jerrt'}; var obj = new Object(); O ...

  8. A-Frame_简单介绍

    VR框架A-Frame: https://aframe.io 版本: 0.2.0    30/6/2016 A-Frame 是一个能够实现在web网页上实现3D和VR体验的开源框架,它是由 MozVR ...

  9. 一、MongoDB的下载、安装与部署

    1.什么是MongoDB? 它是介于关系型数据库和非关系型数据库之间的一种NoSQL数据库,用C++编写,是一款集敏捷性.可伸缩性.扩展性于一身的高性能的面向文档的通用数据库. 2.为什么要用Mong ...

  10. Mysql导入导出 改密命令总结(笔记三)

    一.从数据库导出数据 注意这些语句的执行是在在没进入mysql命令行之前,在mysql命令行不行 C:\Windows\system32>导出命令 而不是 Mysql>导出命令 1.导出整 ...