selenium入门教程c#

一、 简述

1. 介绍

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

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

 

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在浏览器后台执行,它通过修改HTMLDOM(文档对象模型)来执行操作,实际上是通过 javascript来控制的。执行时窗口可以最小化,可以在同一机器执行多个测试。而QTP完全模拟终端用户,独占屏幕,只能开启一个独占的实例。 

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

3. 浏览器支持。 Selenium支持IE, Firefox, SafariOpera,QTP仅支持IEFirefox。 

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

5. Selenium可以用 javac#pythonrubyphpperlHTML,但是QTP只能使用VB来编写。 

6. QTP只支持WindowsSelenium可以支持WindowsLinuxmacandroidIOS等。 

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)[转载]selenium入门教程c#

 

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入门教程c#

[转载]selenium入门教程c#

[转载]selenium入门教程c#

[转载]selenium入门教程c#

 

 

 

 

三、 Selenium IDE的使用

1. 界面介绍

 

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

点击打开

[转载]selenium入门教程c#

打开之后出现如下界面

[转载]selenium入门教程c#

 

[转载]selenium入门教程c#

以上

1填写待测网站站点

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

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

4测试脚本

5测试的代码

6日志,消息等 

 

 

2. 关键设置

点击options 

Format

 

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

 

 

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

出现以下选项为设置成功

 

 

[转载]selenium入门教程c#

[转载]selenium入门教程c#

[转载]selenium入门教程c#

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3. 使用举例

 

[转载]selenium入门教程c#

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

 

 

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

[转载]selenium入门教程c#

[转载]selenium入门教程c#

[转载]selenium入门教程c#



 


 

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

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

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

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

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

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

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

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


[转载]selenium入门教程c#

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

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

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

[转载]selenium入门教程c#

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

 

4. 代码转换

 

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

[转载]selenium入门教程c#

选择 c#NUintWebDriver

[转载]selenium入门教程c#

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

点击确定 为以下c#代码

 

 [转载]selenium入门教程c#

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

四、 Selenium 在vs2010的编码

1. 建立selenium测试项目

2. 编码

 

 

[转载]selenium入门教程c#

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

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

3增加引用

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

全选所有DLL文件,点击OK

[转载]selenium入门教程c#

 

项目引用会有如下文件

[转载]selenium入门教程c#

复制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;

            }

        }

    }

}

posted @ 2017-06-17 23:42  君莫笑·秋  阅读(15462)  评论(0编辑  收藏  举报