一、  网上方案整理

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. 在信号处理函数中调用longjmp

    错误情况及原因分析 前两天看APUE的时候,有个程序要自己制作一个sleep程序,结果在这个程序中就出现了在信号处理函数中调用longjmp函数的情况,结果就出现了错误,具体错误是啥呢,请参见下面这段 ...

  2. sublime搭建Java编译平台及编码问题

    Sublime自带Java编译功能,当时只能编译不能运行,我们做一下小小的修改就可以让sublime一步完成编译运行的功能,实现sublime搭建Java编译平台. 使用Ctrl + B 编译时,所编 ...

  3. webservice简介以及简单使用

    本文主要是简单的介绍webservice是什么.webservice的由来.webservice的作用,以及后面会介绍webservice的使用. webservice是什么? 目前,Web serv ...

  4. Oracle登录时提示错误,导致用户无法登录

    Oracle登录时提示错误,导致用户无法登录,错误如下 ------------------------------------------------------------------------ ...

  5. app.config *.exe.config 和*.vshost.exe.config基础学习

    一.问题描述 在使用config文件来保存一些参数,便于下次启动程序时自动加载上次设置的参数的功能时, 碰到个问题,vs2010下调试运行程序始终无法实现config记录上次参数值,而直接运行exe程 ...

  6. 学习c编程的第三天

    #include<stdio.h> int add(int,int); int main(){ int x=add(1,2); printf("%d",x); retu ...

  7. Azkaban 作业调度

    转载一篇不错的文章:http://www.cnblogs.com/smartloli/p/5191155.html

  8. 【转】Spark快速入门指南

    尊重版权,原文:http://blog.csdn.net/macyang/article/details/7100523   - Spark是什么? Spark is a MapReduce-like ...

  9. 神奇的脱机 app_offline.htm

    在更新或维护网站的时候,需要给用户一个明确的提示; 如"系统正在维护中..."."系统更新中..." 等信息 这里介绍园友告知的一个超级简单的做法:  在网站根 ...

  10. 【转载!】关于C#的RawSocket编程的问题

    Q:你好! 看过了你在csdn上发表的<用C#下的Raw Socket编程实现网络封包监视>,觉得很感兴趣,而且对我的帮助很大.不过在调试的过程中遇到一些问题,特此向你请教一下.谢谢! 首 ...