1、 简述javascript
1. 介绍php
Selenium是ThoughtWorks专门为Web应用程序编写的一个验收测试工具。html
Selenium测试直接运行在浏览器中,就像真正的用户在操做同样。支持的浏览器包括IE、 Mozilla Firefox、Google Chrome等。这个工具的主要功能包括:测试与浏览器的兼容性,测试系统功能。支持自动录制动做和自动生成Net、Java、Perl等不一样语言的测试脚本。java
2. 优点python
1. 更加逼真的模拟用户操做网页android
2. 跨平台(Windows,Linux,mac,android,IOS) ,web
3. 跨浏览器(Firefox,IE,Chrome, Opera,Safari) 编程
4. 多语言支持(java,c#,python,ruby,php,perl,js) c#
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/docs/
5. Selenium版本介绍
• Selenium 主要分为
Selenium core:为selenium的核心部分,如今已经不单独使用了;
Selenium RC(Selenium1):为上一代产品,如今已经被2代所取代;
Selenium IDE:是火狐上的录制插件;
Selenium Grid(用于并发测试) ;
Selenium WebDriver(Selenium2)
• Selenium2已经包含了一代全部代码,并实现了一些一代没法完成的功能,并具备面向对象,拓展性好等特色。
2、 下载
1. Selenium 下载
1)进入官网下载http://www.seleniumhq.org/download/
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/
或者在火狐中下载
3、 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中进行运行
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;
}
}
}
}