Selenium & Visual Studio构建Web自动化测试

一、  Selenium 介绍

   Selenium是ThroughtWorks公司一个强大的开源Web功能测试工具系列,主要包括以下4款:

   1.Selenium Core:是Selenium IDE和Selenium RC的引擎。

   2.Selenium IDE:是一个录制工具,他可以录制操作,并且可以自动产生各种语言的代码,Selenium IDE是一个FireFox插件,目前只能运行在FireFox浏览器。

   3.Selenium RC:支持很多浏览器,可以使用C#,Java等语言编写测试案例,易于维护,同时提供了很好的扩展性。

   4.Selenium Grid:允许同时并行地、在不同的环境上运行多个测试任务。

二、 测试环境搭建 


   










               ( 自动测试运行示意图P001 )

  1、Selenium IDE 安装

      下载安装文件:selenium-ide-1.0.6.xpi

      安装步骤同一般Firefox插件安装。

      安装成功后在Firefox “工具”菜单下可以看到”Selenium IDE”菜单,如下图 


    











           ( 图P002 )

   2、Visual Studio 安装(略)

   3、Selenium RC 启动

      下载RC安装包:selenium-remote-control-1.0.3.zip

      下载JRE安装包:jre-6u4-windows-i586-p.rar

     (1)JRE安装(略)

     (2)RC 安装

         首先解压缩selenium-remote-control-1.0.3.zip

         打开命令窗口,转到上述解压缩目录下,运行:java -jar selenium-server.jar 

 

















三、 
演示实例

  1、 新建Test Project 


















2、
引用Selenium DLL组件









 









3、
用Selenium IDE录制自动测试脚本

    (1)在Firefox中启动Selenium IDE,点击右上角的红色按钮开始录制           

















  (2) 在Firefox中手动操作待自动测试的功能(OA请假申请),可随时在”Options” –“Format”把脚本转化成上图示的各种语言。       

自动生成的代码
using System;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using NUnit.Framework;
using Selenium;

namespace SeleniumTests
{
[TestFixture]
public class Untitled
{
private ISelenium selenium;
private StringBuilder verificationErrors;

[SetUp]
public void SetupTest()
{
selenium
= new DefaultSelenium("localhost", 4444, "*chrome", "http://change-this-to-the-site-you-are-testing/");
selenium.Start();
verificationErrors
= new StringBuilder();
}

[TearDown]
public void TeardownTest()
{
try
{
selenium.Stop();
}
catch (Exception)
{
// Ignore errors if unable to close the browser
}
Assert.AreEqual(
"", verificationErrors.ToString());
}

[Test]
public void TheUntitledTest()
{
selenium.Open("/OA/index.aspx");

            selenium.Type(
"txtName", "gsc\\fangro");

            selenium.Type(
"txtPwd", "1");

selenium.Click(
"BlonginYes");

            selenium.WaitForPageToLoad(
"30000");

selenium.Click(
"//a[@id='menu1']/span");
selenium.Click(
"//li[@id='active-menuitem']/a");
selenium.WaitForPageToLoad(
"30000");
selenium.WaitForPopUp(
"_self", "30000");
selenium.Select(
"ctl00_MainContentPlaceHolder_ddlLeaveType", "label=特休假");
selenium.Click(
"//option[@value='1']");
selenium.Type(
"ctl00_MainContentPlaceHolder_txtStartTime", "2010/04/28 15:00");
selenium.Type(
"ctl00_MainContentPlaceHolder_txtEndTime", "2010/04/28 18:00");
selenium.Click(
"ctl00_MainContentPlaceHolder_txtReason");
selenium.Type(
"ctl00_MainContentPlaceHolder_txtReason", "Test");
selenium.Type(
"ctl00_MainContentPlaceHolder_txtRemark", "Test");
selenium.Click(
"ctl00_MainContentPlaceHolder_btnSave");
selenium.Click(
"//button[@type='button']");
selenium.WaitForPageToLoad(
"30000");
}
}
}

  4、 在Visual Studio添加Unit测试

 





















5、
在Visual Studio生成的Unit Test中应用录制脚本】

       将Selenium IDE生成的C#脚本类复制Unit Test中,做如下修改:

       添加using Selenium;引用

       将[TestFixture] 改为 [TestClass]

       [SetUp] 改为 [TestInitialize]

       [TearDown] 改为 [TestCleanup]

       [Test] 改为 [TestMethod]

       如果在IE下测试需要将” *chrome” 改为 “*iexplore”  

      OA请假申请 脚本修改后 代码如下:

修改后C#代码
using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Selenium;

namespace SeleniumDemo
{
[TestClass]
public class OATestClass
{
private ISelenium selenium;
private StringBuilder verificationErrors;
[TestInitialize]
public void SetupTest()
{
selenium
= new DefaultSelenium("localhost", 4444, "*iexplore", "http://gsc-is-dev01/");
selenium.Start();
verificationErrors
= new StringBuilder();
}
[TestCleanup]
public void TeardownTest()
{
try
{
selenium.Stop();
}
catch (Exception)
{
// Ignore errors if unable to close the browser
}
Assert.AreEqual(
"", verificationErrors.ToString());
}

[TestMethod]
public void LeaveCreateTest()
{
selenium.Open(
"/OA/index.aspx");
selenium.Type(
"txtName", "gsc\\fangro");
selenium.Type(
"txtPwd", "1");
selenium.Click(
"BlonginYes");
selenium.WaitForPageToLoad(
"30000");
selenium.Click(
"//a[@id='menu1']");
selenium.Click(
"//a[@href='http://gsc-is-dev01/OA/OA/Leave/LeaveEdit.aspx']");//[@id='active-menuitem']");
selenium.WaitForPageToLoad("30000");
selenium.Select(
"ctl00_MainContentPlaceHolder_ddlLeaveType", "index=1");
selenium.Click(
"//option[@value='1']");
System.DateTime dtnow
= DateTime.Now;
selenium.Type(
"ctl00_MainContentPlaceHolder_txtStartTime", dtnow.Year.ToString()+"/"+dtnow.Month.ToString()+"/"+dtnow.Day.ToString() +" "+dtnow.Hour.ToString()+":"+dtnow.Minute.ToString()); //"2010/04/27 15:00");
dtnow = dtnow.AddHours(0.5);
selenium.Type(
"ctl00_MainContentPlaceHolder_txtEndTime", dtnow.Year.ToString()+"/"+dtnow.Month.ToString()+"/"+dtnow.Day.ToString() +" "+dtnow.Hour.ToString()+":"+dtnow.Minute.ToString());//"2010/04/27 18:00");
selenium.Click("ctl00_MainContentPlaceHolder_txtReason");
selenium.Type(
"ctl00_MainContentPlaceHolder_txtReason", "Selenium Testing");
selenium.Type(
"ctl00_MainContentPlaceHolder_txtRemark", "Robert Fang");
selenium.Click(
"ctl00_MainContentPlaceHolder_btnSave");
selenium.Click(
"//button[@type='button']");
selenium.WaitForPageToLoad(
"30000");
}
}
}

 

 

6、 运行测试

(1)在命令窗口中定位到selenium-server.jar所在目录,运行:java -jar selenium-server.jar     


















(3) 在VS中打开Test View进行Web自动化测试

   














四、 
Selenium 中文手册
       http://www.cnblogs.com/fangxianjun/articles/1722254.html 

posted @ 2010-04-27 18:01  fangxianjuner  阅读(2288)  评论(0编辑  收藏  举报