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

  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测试。

你可能感兴趣的:(自动化测试)