集成C#测试框架和Selenium对于Web系统实现自动化测试

系统环境:

软件需求: Visual C# 2010,Mozilla Firefox,Selenium

硬件需求: Pentium III 450以上的CPU处理器,64MB以上的内存,200MB的自由硬盘空间

内容简介:

1. 利用Spy++进行Windows对象识别,查找Windows计算器中的3类不同的对象,列出这些对象的常规属性。

2. 利用Selenium测试脚本录制以下操作:

(1) 在Firefox地址栏中输入淘宝网主页网址http://www.taobao.com/,回车载入网页;

(2) 点击“搜索”旁边的“店铺”;

(3) 在搜索栏中输入“考拉”,点击“搜索”按钮;

(4) 鼠标右键点击链接“考拉一家”,在弹出菜单中点击“verifyElementPresent link=考拉一家”;

(5) 点击“考拉一家”左边的图片,进入该网页。

(6) 结束脚本录制。

3. 利用C#测试框架和NUNIT测试框架,实现自动化测试,测试和回放实验内容第2项中的脚本。

实施过程

(1) 用selenium录制相应脚本,要将所有selectwindows选项的target选项设为null,脚本运行成功后作为C#语言导出

源代码如下

using System;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using NUnit.Framework;
using Selenium;

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

[SetUp]
public void SetupTest()
{
selenium = new DefaultSelenium("localhost", 4444, "*chrome", "https://www.taobao.com/");
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 The77777Test()
{
            selenium.Open("/");
            selenium.Click("css=li.J_SearchTab.shop-search-tab");
            selenium.Click("id=q");
            selenium.Type("id=q", "考拉");
            selenium.Click("css=button.btn-search");
            selenium.WaitForPageToLoad("30000");
            selenium.SelectWindow("null");
            try
            {
                Assert.IsTrue(selenium.IsElementPresent("link=考拉一家"));
            }
            catch (AssertionException e)
            {
                verificationErrors.Append(e.Message);
            }
            selenium.SelectWindow("null");
            selenium.Click("css=img");
}
}
}

(2) 新建VS中C#测试项目,在类中导入ThoughtWorks.Selenium.Core.dll,添加相应头文件后将代码修改如下

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Text;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Threading;
using Selenium;
using System.Linq;

namespace UnitTestProject1
{
    [TestClass]
    public class UnitTest1
    {
        [TestMethod]
        public void TestMethod1()
        {
            ISelenium selenium = new DefaultSelenium("localhost", 4444, "*chrome", "https://www.taobao.com/");
            selenium.Start();
            //verificationErrors = new StringBuilder();
            selenium.Open("/");
            selenium.Click("css=li.J_SearchTab.shop-search-tab");
            selenium.Click("id=q");
            selenium.Type("id=q", "考拉");
            selenium.Click("css=button.btn-search");
            selenium.WaitForPageToLoad("30000");
            selenium.SelectWindow("null");
            Assert.IsTrue(selenium.IsElementPresent("link=考拉一家"));
            selenium.SelectWindow("null");
            Thread.Sleep(5000);
            selenium.Click("css=img");
            Thread.Sleep(5000);
            selenium.Close();
            selenium.Stop();
        }
    }
}

(3) 打开 cmd 进入 selenium-server-1.0-beta-2目录,输入“java -jar selenium-server.jar”,启动 Selenium测试服务器

在测试项目中运行测试。

(4) 对于NUNIT的测试框架,在VS中新建C#控制台程序项目,导入nunit.framework和ThoughtWorks.Selenium.Core的类库文件,然后在主函数外添加三种C#脚本代码中的方法,并在主函数中调用。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Selenium;
using NUnit.Framework;
using System.Threading;

namespace ConsoleApplication2
{
    //[TestFixture]
    public class SeleniumTest
    {
        class Program
        {
            static void Main(string[] args)
            {
                Program p = new Program();
                p.SetupTest();
                p.TheSeleniumTest();
                Thread.Sleep(500);
                p.TeardownTest();
            }
            private ISelenium selenium;
            private StringBuilder verificationErrors;
            //[SetUp]
            public void SetupTest()
            {
                selenium = new DefaultSelenium("localhost", 4444, "*chrome", "https://www.taobao.com/");
                selenium.Start();
                verificationErrors = new StringBuilder();
            }

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

            //[Test]
            public void TheSeleniumTest()
            {
                selenium.Open("/");
                selenium.Click("css=li.J_SearchTab.shop-search-tab");
                selenium.Type("id=q", "考拉");
                selenium.Click("css=button.btn-search");
                selenium.WaitForPageToLoad("30000");
                selenium.SelectWindow("null");
                try
                {
                    Assert.IsTrue(selenium.IsElementPresent("link=考拉一家"));
                }
                catch (AssertionException e)
                {
                    verificationErrors.Append(e.Message);
                }
                selenium.SelectWindow("null");
                selenium.Click("link=考拉一家");
            }
        }
    }
}

(5)同理先启动服务器,然后将项目启动,完成测试

总结:自动化测试是单元测试、集成乃至系统测试的实际操作方式中运用很广泛的一种,因为现实中因为测试用例量太大,测试工作繁琐或者系统规模过大不得不开发出自动化测试的理论和技术。在测试过程中,最困难的步骤是脚本转化为代码再结合到测试项目中,对于VS测试框架,需要用脚本代码中代表核心操作的部分添加到测试类中,并注意不要引入NUNIT框架;对于NUNIT测试项目,需要多导入一个nunit.framework.dll引入框架,测试时启动项目而非运行测试。本测试过程中需要注意头文件的引入正确,启动服务器时端口不能被占用,而且相关的jar包必须是版本符合要求,不然服务器会报异常。整个系统的逻辑是将测试脚本嵌入测试代码中,通过selenium sever服务器连接脚本、浏览器和selenium插件,实现脚本在框架中接受测试并通过浏览器运行。

时间: 2024-08-08 20:05:36

集成C#测试框架和Selenium对于Web系统实现自动化测试的相关文章

Spring TestContext测试框架搭建

同样是测试,JUnit和Spring TestContext相比,Spring TestContext优势如下: 1.Spring TestContext可以手动设置测试事务回滚,不破坏数据现场 2.在测试类中不用手动装配bean,只要一个@Autowired即可自动装配 ----------------分割线--------------------------- 本文记录web project和java project如何使用TestContext测试框架,首先介绍web project 现总

手工测试 测试框架?如何提高测试效率?

百度了一下“测试框架”,搜索结果大部分都是“自动化测试框架”.“单元测试框架”,没有手工测试框架.但是所谓框架不就是把“共性部分形成的体系”提高效率和质量吗? 做测试3年,现在想的更多的是如何提高测试效率和保证测试用例的覆盖率.目前所在的是公司是互联网公司(之前一直在传统软件公司工作),节奏很快,测试周期很短.产品需求文档的完善程度也是参差不齐,然后测试时间又比较紧急,除了个别庞大的项目外,领导不会专门预留编写测试用例的时间. 事件一,2015/12/8,领导安排我和另外一个同事测试一个新增节点

web系统的测试点

一:功能测试 1.链接测试(工具Xenu) (1).测试所有链接是否按指示的那样确实链接到了该链接的页面: (2).测试所链接的页面是否存在: (3).保证Web应用系统上没有孤立的页面(所谓孤立页面是指没有链接指向该页面,只有知道正确的URL地址才能访问) 2.表单测试 (1).注册.登陆.信息提交等,必须测试提交操作的完整性,以校验提交给服务器的信息的正确性: (2).用户填写的出生日期与职业是否恰当,填写的所属省份与所在城市是否匹配等: (3).检验默认值的正确性: (4).如表单只能接受

TestNG测试框架在基于Selenium进行的web自动化测试中的应用

这个测试框架可以把写好的测试用例按自定义顺序执行,以Selenium WebDriver自动化测试用例为例: 1.新建一个名为forTestNg的java project,然后创建一个libs文件夹,导入所有和Selenium相关的jar包: 2.安装TestNG,在Eclipse中点击Help->Install New Software,点击Add,Location填写“http://beust.com/eclipse”,然后点击OK: 之后勾选TestNG,点击Next进行安装即可: 之后点

selenium 测试框架中使用grid

之前的测试框架:http://www.cnblogs.com/tobecrazy/p/4553444.html 配合Jenkins可持续集成:http://www.cnblogs.com/tobecrazy/p/4529399.html 在测试框架中使用Log4J 2 :http://www.cnblogs.com/tobecrazy/p/4557592.html 首先介绍一下grid ,selenium grid 是一种执行测试用例时使用的包含不同平台(windows.Linux.Androi

基于Selenium的web自动化框架

1 什么是selenium Selenium 是一个基于浏览器的自动化工具,它提供了一种跨平台.跨浏览器的端到端的web自动化解决方案.Selenium主要包括三部分:Selenium IDE.Selenium WebDriver 和Selenium Grid: Selenium IDE:Firefox的一个扩展,它可以进行录制回放,并可以把录制的操作以多种语言(例如java,python等)的形式导出成测试用例. Selenium WebDriver:提供Web自动化所需的API,主要用作浏览

selenium一个完整的unittest测试框架格式(单线程,非测试报告)

我在工作中碰到过同事写了些web自动化测试的脚本,有次我问他使用的是什么测试框架, 他居然说不知道.这位同事其实写selenium自动化测试也有些时间了.当我看了他的脚本 不出意外,他使用的就是unittest框架,哈哈.所以我觉得有些同学虽然会做相关东西, 但其实并不知道自己所掌握的东西是什么. 下面呢,我就结合自己写的脚本分析下一个完成的unittest测试框架的包括的内容. 图中我已经写的很详细拉.想交流的可以加QQ群:610845268

selenium测试框架(java) 版本演化一

selenium的自动化测试代码应该如何组织?  如链接:https://code.google.com/p/selenium/wiki/PageObjects  这里提供了一种PageObject的设计思想,并且在百度内部给出了一个感觉比较实用的实现.其组织结构思想如下: Page 封装页面元素,以及页面应提供的服务. 尽量隐藏页面的细节,不要暴露出来. widget 封装Page中的通用的组件. 这里的理念是所有的WebElement都是控件. 通用的页面样式,如导航栏,列表,组合查询框,可

利用Selenium自动化web测试

简介: Selenium 是一个没有正式指导手册的开源项目,这让测试人员的问题调查很费时间.本文为基于 Selenium 1.0(发布于 2009 年 6 月)的测试期间的常见问题提供最佳实践. 简介 Selenium 是一个健壮的工具集合,跨很多平台支持针对基于 web 的应用程序的测试自动化的敏捷开发.它是一个开源的.轻量级的自动化工具,很容易集成到各种项目中,支持多种编程语言,比如 .NET.Perl.Python.Ruby 和 Java? 编程语言. 利用 Selenium 测试 Aja