一、 简述

1. 介绍

Selenium是ThoughtWorks专门为Web应用程序编写的一个验收测试工具。

Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE、 Mozilla Firefox、Google Chrome等。这个工具的主要功能包括:测试与浏览器的兼容性,测试系统功能。支持自动录制动作和自动生成Net、Java、Perl等不同语言的测试脚本。

2. 优势

1. 更加逼真的模拟用户操作网页

2. 跨平台(Windows,Linux,mac,android,IOS) ,

3. 跨浏览器(Firefox,IE,Chrome, Opera,Safari)

4. 多语言支持(java,c#,python,ruby,php,perl,js)

5. 开源免费

6. 综上所述,selenium是可以个性定制的,可以适应不同团队的,不要钱的自动化web测试工具

3.  Selenium与QTP

共同特征

1. 都可以进行Web测试

2. 都支持录制回放

3. 两者录制的脚本都有较差的兼容性,都需要有经验的开发人员进行调整。

QTP的优势

1. QTP 功能很完善,界面很强大。还对window等其他程序的支持

2. QTP录制功能强大,而Selenium IDE只是一个火狐插件,功能有限。

3. QTP有对象库,方便我们管理对象,而selenium只能进行编码维护,或者自己编写界面。

4. QTP有非常优秀的测试报告,Selenium自己没有,需要集成其他报表产品(比如结合JUnit)

5. QTP对测试人员的要求低,Selenium不会编程能做的事情有限。

Selenium的优势

1. 用户仿真:Selenium在浏览器后台执行,它通过修改HTML的DOM(文档对象模型)来执行操作,实际上是通过 javascript来控制的。执行时窗口可以最小化,可以在同一机器执行多个测试。而QTP完全模拟终端用户,独占屏幕,只能开启一个独占的实例。

2. Selenium一个机器可以跑多种脚本,但QTP独占模式必须要大量测试机器。

3. 浏览器支持。 Selenium支持IE, Firefox, Safari和Opera等,而QTP仅支持IE和Firefox。

4. Selenium2 是完全面向对象的设计 ,让开发者更加得心应手,QTP不是。

5. Selenium可以用 java,c#,python,ruby,php,perl,HTML,但是QTP只能使用VB来编写。

6. QTP只支持Windows,Selenium可以支持Windows,Linux,mac,android,IOS等。

7. Selenium的开发环境由公司决定, QTP只能在自己的IDE中使用。

8. QTP的代码提示等功能太弱,加大初学者难度。

9. 最重要的是Selenium不要钱。

4. 参考文档

官网http://docs.seleniumhq.org/

帮助文档http://docs.seleniumhq.org/docs/

5. Selenium版本介绍

• Selenium 主要分为

Selenium core:为selenium的核心部分,现在已经不单独使用了;

Selenium RC(Selenium1):为上一代产品,现在已经被2代所取代;

Selenium IDE:是火狐上的录制插件;

Selenium Grid(用于并发测试) ;

Selenium WebDriver(Selenium2)

•  Selenium2已经包含了一代所有代码,并实现了一些一代无法完成的功能,并具有面向对象,拓展性好等特点。

二、 下载

1. Selenium 下载

1)进入官网下载http://www.seleniumhq.org/download/

2)

2. 其他下载

Firefox下载 http://firefox.com.cn/download/

Firebug下载:https://addons.mozilla.org/firefox/addon/1843

FirePath 下载 https://addons.mozilla.org/zh-CN/firefox/addon/firepath/

或者在火狐中下载

三、 Selenium IDE的使用

1. 界面介绍

安装好IDE后会在FF中工具选择下有Selenium IDE的选项

点击打开

打开之后出现如下界面

以上

1填写待测网站站点

2脚本的速度设置,执行暂停等

3录制 默认是进入录制状态,点击一下取消录制

4测试脚本

5测试的代码

6日志,消息等

2. 关键设置

点击options

Format

如果出现: (want the formats back?click read more,这是无法把录制的脚本转换为其他语言的。请点击options下面的options…进入如下设置界面

选择标红的选项,点击确定。

出现以下选项为设置成功

3. 使用举例

上图标明了一些Selenium IDE的主要功能。其中,由Command,Target,Value组成的表格就是脚本,每个脚本都是由一条一条的Action(行为)组成,而每个 Action又由(Command,Target,Value)三者组成。Command就是动作,Target指的是Web中的某个对象,比如:文字,输入框等等,,而Value就是这个对象的值。

当弹出上面的IDE窗口后,我们就可以开始Selenium的脚本录制了,右上角有个红色的圆点,当它下按时(如上图)就表示IDE正在进行脚本录制。 OK,开始录制,录制的时候,直接操作Firefox浏览器窗口就可以了,IDE会自动记录你的操作的,下面我演示一个例子:

上图例子中,我的操作步骤如下:

(1).在地址栏输入:http://www.baidu.com/

(2).登陆百度首页后,在查询框输入“hyddd”。

(3).按“百度一下”按钮

(4).进入搜索结果页面后,右键单击第一条记录(即:hyddd - 博客园),在右键弹出菜单中,单击“Verify TestPersent hyddd - 博客园”。

(5).单击第一条记录(即:进入hyddd - 博客园)

(6).Firefox弹出一个新Tab页面,并进入了我的博客。

OK,现在看看我们的Selenium IDE录制的结果吧:>

上图中,中间的表格就是录制的结果,你可以按“运行脚本”重新回放脚本看看,值得注意的是,在运行时,Firefox可能会认为脚本中最后一个操作(即: 步骤6)为非法弹出框,浏览器会自动阻止其弹出,这个需要设置一下Firefox,具体位置 是:Firefox->Menubar->Tools->options->content->Block pop-up Window,你可以把钩去掉或者在Exceptions里面添加相应的网址。

恩,到此为止,脚本录制圆满完成:>

在运行脚本后,你会发现IDE表格的颜色发生了变化,运行前,脚本表格为白色,成功运行完毕后,表格为青色,其中还分为深青色和浅青色两种,浅青色表示: 动作成功,如:打开网页成功,点击按钮成功等等,而深青色表示:判断正确,如:“hyddd - 博客园”这段文字在页面中存在等等。 看完正确,现在我们看看出错时的情况吧。

出错时,表格可能会出现两种颜色,一种是浅粉红色,一种是深粉红色。浅粉红色表示判断结果为false,这种情况案例还是会继续执行下去,判断的失败不会影响案例的运行,深粉红色表示动作失败,如:没有找到按钮等(如上图),这种情况下案例会停止运行。

4. 代码转换

点击以下可以转化为对应语言的版本

选择 c#、NUint?WebDriver

警告转换为c#之后就不能再IDE中执行了

点击确定 为以下c#代码

可以复制一下代码粘贴到vs中进行运行

四、 Selenium 在vs2010的编码

1. 建立selenium测试项目

2. 编码

1创建一个项目,这儿我以控制台程序为例

2 下载selenium c#包 [selenium-dotnet-2.32.0.zip]并解压

3增加引用

我是用的donet4.0所以选择4.0的。

全选所有DLL文件,点击OK

项目引用会有如下文件

复制IDE中代码 修改之后就可以跑起来第一个selenium脚本了

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using OpenQA.Selenium;

using NUnit.Framework;

using OpenQA.Selenium.Firefox;

namespace ConsoleApplication1

{

[TestFixture]

class Program

{

static void Main(string[] args)

{

Program p = new Program();

p.SetupTest();

p.TheUntitledTest();

p.TeardownTest();

}

private IWebDriver driver;

private StringBuilder verificationErrors;

private string baseURL;

private bool acceptNextAlert = true;

[SetUp]

public void SetupTest()

{

driver = new FirefoxDriver();

baseURL = "http://www.baidu.com/";

verificationErrors = new StringBuilder();

}

[TearDown]

public void TeardownTest()

{

try

{

driver.Quit();

}

catch (Exception)

{

// Ignore errors if unable to close the browser

}

Assert.AreEqual("", verificationErrors.ToString());

}

[Test]

public void TheUntitledTest()

{

driver.Navigate().GoToUrl(baseURL + "/");

driver.FindElement(By.Id("kw")).Clear();

driver.FindElement(By.Id("kw")).SendKeys("selenium");

driver.FindElement(By.Id("su")).Click();

driver.FindElement(By.Id("kw")).Clear();

driver.FindElement(By.Id("kw")).SendKeys("selenium ide的Ì?使º1用®?");

driver.FindElement(By.Id("su")).Click();

}

private bool IsElementPresent(By by)

{

try

{

driver.FindElement(by);

return true;

}

catch (NoSuchElementException)

{

return false;

}

}

private bool IsAlertPresent()

{

try

{

driver.SwitchTo().Alert();

return true;

}

catch (NoAlertPresentException)

{

return false;

}

}

private string CloseAlertAndGetItsText()

{

try

{

IAlert alert = driver.SwitchTo().Alert();

string alertText = alert.Text;

if (acceptNextAlert)

{

alert.Accept();

}

else

{

alert.Dismiss();

}

return alertText;

}

finally

{

acceptNextAlert = true;

}

}

}

}

selenium入门教程c#的更多相关文章

  1. Pytest自动化测试-简易入门教程(02)

    Pytest框架简介 Pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点:1.简单灵活,容易上手,支持参数化2.能够支持简单的单元测试和复杂的功能测试,3.还可以用来做sel ...

  2. wepack+sass+vue 入门教程(三)

    十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...

  3. wepack+sass+vue 入门教程(二)

    六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...

  4. wepack+sass+vue 入门教程(一)

    一.安装node.js node.js是基础,必须先安装.而且最新版的node.js,已经集成了npm. 下载地址 node安装,一路按默认即可. 二.全局安装webpack npm install ...

  5. Content Security Policy 入门教程

    阮一峰文章:Content Security Policy 入门教程

  6. gulp详细入门教程

    本文链接:http://www.ydcss.com/archives/18 gulp详细入门教程 简介: gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优 ...

  7. UE4新手引导入门教程

    请大家去这个地址下载:file:///D:/UE4%20Doc/虚幻4新手引导入门教程.pdf

  8. ABP(现代ASP.NET样板开发框架)系列之2、ABP入门教程

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之2.ABP入门教程 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...

  9. webpack入门教程之初识loader(二)

    上一节我们学习了webpack的安装和编译,这一节我们来一起学习webpack的加载器和配置文件. 要想让网页看起来绚丽多彩,那么css就是必不可少的一份子.如果想要在应用中增加一个css文件,那么w ...

随机推荐

  1. SQLite3 of python

    SQLite3 of python 一.SQLite3 数据库 SQLite3 可使用 sqlite3 模块与 Python 进行集成,一般 python 2.5 以上版本默认自带了sqlite3模块 ...

  2. haystack(django的全文检索模块)

    haystack haystack是django开源的全文搜索框架 全文检索:标题可以检索,内容也可以检索 支持solr ,elasticsearch,whoosh 1.注册app 在setting. ...

  3. Python9-MySQL-pymysql模块-day44

    import pymysql user = input('username: ') pwd = input('password: ') conn = pymysql.connect(host=',da ...

  4. (转)RubyGems常用命令

    什么是RubyGems? RubyGems是一个方便而强大的Ruby程序包管理器,Ruby的第三方插件是用gem方式来管理,非常容易发布和共享,一个简单的命令就可以安装上第三方的扩展库.特点:能远程安 ...

  5. C语言实例解析精粹学习笔记——44(冒泡排序)

    冒泡排序,从序列的最后一个元素与前一个元素比较大小,如果R[n-1]>R[n]则交换两个元素的位置(R[0]作为临时存放区)将最小的数据交换到R[1],第二次循环将第二小的数交换到R[2].通过 ...

  6. nowcoder N约数个数

    n的约数个数 题目:t次询问,每次给你一个数n,求在[1,n]内约数个数最多的数的约数个数 数据:对于100%的数据,t <= 500 , 1 <= n <= 10000000000 ...

  7. 线性回归、逻辑回归(LR)

    线性回归 回归是一种极易理解的模型,就相当于y=f(x),表明自变量 x 和因变量 y 的关系.最常见问题有如 医生治病时的望.闻.问.切之后判定病人是否生了什么病,其中的望闻问切就是获得自变量x,即 ...

  8. Python接口测试之封装requests

    首先安装requests库: pip install requests test_requests.py 首先在TestRequest类中封装get与post方法, import requests i ...

  9. Java集合中的细节问题

    1)集合不保存基本数据类型,而是会把基本数据类型装箱后保存. 2)Empty和null的区别:null是不存在,Empty已经初始化了,只不过里面是空的. 3)判断集合有效性: 先判断空,再判断emp ...

  10. IOS开发学习笔记017-第一个IOS应用

    第一个IOS应用程序,就从最简单的开始吧. 1.先了解一下开发环境,Xcode的相关组成 2.还有模拟器 3.运行与停止按钮 4.新建一个工程 5.看看main函数里都有啥 6.现在来添加一个控件 1 ...