`
libin0019
  • 浏览: 237429 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

Selenium RC工作原理和测试案例

 
阅读更多

引自:http://blog.sina.com.cn/s/blog_44e5fca90100ghx5.html

第一个Selenium RC测试案例

  《Selenium简介》中讲过,Selenium RC支持多种语言编写测试案例,如:C#,Python。在工作中,我倾向于是用Python这类动态语言编写测试案例,因为这样的测试案例无需编译:>,试想如果你有1000个测试案例,每个都要编译,那会给编译服务器很大的压力,而且案例修改后,还得重新编译才能运行:<。但在本系列的文章中,我还是打算使用C#编写示范例子。

  Selenium RC下载:http://seleniumhq.org/download/

Selenium私房菜系列5 -- 第一个Selenium RC测试案例

  写Selenium RC的测试案例

   上一篇《Selenium IDE的使用》中,提到了Selenium IDE可以把录制的脚本转为其他语言的脚本,所以我继续用上一篇的脚本为例子,下面是把脚本语言转换为C#后的代码:

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

namespace SeleniumTests
{
    [TestFixture]
    public class NewTest
    {
        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 TheNewTest()
        {
            selenium.Open("/");
            selenium.Type("kw", "hyddd");
            selenium.Click("sb");
            selenium.WaitForPageToLoad("30000");
            try
            {
                Assert.IsTrue(selenium.IsTextPresent("hyddd - 博客园"));
            }
            catch (AssertionException e)
            {
                verificationErrors.Append(e.Message);
            }
            selenium.Click("//table[@id='1']/tbody/tr/td/a/font");
        }
    }
}

深入了解Selenium RC工作原理(1)

Selenium私房菜系列4 -- 深入了解Selenium RC工作原理

  前一篇已经比较详细讲述了如何使用Selenium RC进行Web测试,但到底Selenium RC是什么?或者它由哪几部分组成呢??

  一.Selenium RC的组成:

  关于这个问题,我拿了官网上的一幅图来说明这个问题。

Selenium私房菜系列6 -- 深入了解Selenium RC工作原理(1)

  图片看不清楚?请点击这里查看原图(大图)。 

  Selenium RC主要由两部分组成:

  (1).Selenium Server:

Selenium私房菜系列6 -- 深入了解Selenium RC工作原理(1)

  Selenium Server负责控制浏览器行为,总的来说,Selenium Server主要包括3个部分:Launcher,Http Proxy,Selenium Core。其中Selenium Core是被Selenium Server嵌入到浏览器页面中的。其实Selenium Core就是一堆JS函数的集合,就是通过这些JS函数,我们才可以实现用程序对浏览器进行操作。

  (2).Client Libraries:

  写测试案例时用来控制Selenium Server的库。

Selenium私房菜系列6 -- 深入了解Selenium RC工作原理(1)

  二.Selenium RC与Testcase的关系

  先看下图:

Selenium私房菜系列6 -- 深入了解Selenium RC工作原理(1)

  图片看不清楚?请点击这里查看原图(大图)。 

  (1).测试案例(Testcase)通过Client Lib的接口向Selenium Server发送Http请求,要求和Selenium Server建立连接。

  为什么要通过发送Http请求控制Selenium Server而不采用其他方式呢?从上文可以看出,Selenium Server是一个独立的中间服务器(确切地说是代理服务器),它可以架设在其他机器上!所以测试案例通过发送HTTP请求去控制Selenium Server是很正常的。

  (2).Selenium Server的Launcher启动浏览器,把Selenium Core加载入浏览器页面当中,并把浏览器的代理设置为Selenium Server的Http Proxy。

  (3).测试案例通过Client Lib的接口向Selenium Server发送Http请求,Selenium Server对请求进行解析,然后通过Http Proxy发送JS命令通知Selenium Core执行操作浏览器的动作。

  (4).Selenium Core接收到指令后,执行操作。

  (5).浏览器收到新的页面请求信息(因为在(4)中,Selenium Core的操作可能引发新的页面请求),于是发送Http请求,请求新的Web页面。

  由于Selenium Server在启动浏览器时做了手脚,所以Selenium Server会接收到所有由它启动的浏览器发送的请求。

  (6).Selenium Server接收到浏览器的发送的Http请求后,自己重组Http请求,获取对应的Web页面。

  (7).Selenium Server的Http Proxy把接收的Web页面返回给浏览器。

  为什么Selenium RC中的Selenium Server需要以这种代理服务器的形式存在呢?

其实,这和浏览器的“同源策略”(The Same Origin Policy)有关。

  一.什么是同源策略

  同源策略,它是由Netscape提出的一个著名的安全策略,现在所有的可支持javascript的浏览器都会使用这个策略。

  为什么需要同源策略,这里举个例子:

  假设现在没有同源策略,会发生什么事情呢?大家知道,JavaScript可以做很多东西,比如:读取/修改网页中某个值。恩,你现在打开了浏览器,在一个tab窗口中打开了银行网站,在另外一个tab窗口中打开了一个恶意网站,而那个恶意网站挂了一个的专门修改银行信息的JavaScript,当你访问这个恶意网站并且执行它JavaScript时,你的银行页面就会被这个JavaScript修改,后果会非常严重!而同源策略就为了防止这种事情发生,看下图:

Selenium私房菜系列7 -- 深入了解Selenium RC工作原理(2)

  图片看不清楚?请点击这里查看原图(大图)。 

  比如说,浏览器的两个tab页中分别打开了http://www.baidu.com/index.html和http://www.google.com/index.html,其中,JavaScript1和JavaScript3是属于百度的脚本,而JavaScript2是属于谷歌的脚本,当浏览器的tab1要运行一个脚本时,便会进行同源检查,只有和www.baidu.com同源的脚本才能被执行,所谓同源,就是指域名、协议、端口相同。所以,tab1只能执行JavaScript1和JavaScript3脚本,而JavaScript2不能执行,从而防止其他网页对本网页的非法篡改。

  二.Selenium Server为什么以这种代理服务器的形式存在

   上面说了同源策略,那同源策略的Selenium Server有什么关系呢??呵呵,上一篇说过,Selenium Core是一堆JS函数的集合,它是我们操作浏览器的基础。当存在同源策略时,便出现一些问题,看下图:

Selenium私房菜系列7 -- 深入了解Selenium RC工作原理(2)

  图片看不清楚?请点击这里查看原图(大图)。

  因为Selenium Core的JS脚本的“源”是localhost,所以浏览器会阻止Selenium Core的JS脚本在测试页面上执行,这就是为什么在本系列第一篇中说,如果只使用Selenium Core进行测试,需要把Selenium Core安装到远程服务器上。

   为了解决上面这个问题,Selenium RC中的Selenium Server就以代理服务器的形式出现了,下图说明它是如何借助代理的身份蒙骗浏览器的:>

Selenium私房菜系列7 -- 深入了解Selenium RC工作原理(2)

分享到:
评论

相关推荐

    Selenium私房菜(新手入门教程)1

    6.Selenium私房菜系列6 -- 深入了解Selenium RC工作原理(1) 7.Selenium私房菜系列7 -- 深入了解Selenium RC工作原理(2) 8.Selenium私房菜系列8 -- 玩转Selenium Server 9.Selenium私房菜系列9 -- Selenium RC服务器...

    Selenium测试工具研究报告

    1. **Selenium Core**:作为Selenium IDE和Selenium RC的基础引擎,它支持DHTML测试案例,类似于数据驱动测试,为用户提供灵活的测试框架。 2. **Selenium IDE**:这是一个Firefox插件,提供脚本录制功能,简化了...

    selenium自动化测试 java实例

    通过这个PPT,你可以深入理解Selenium的工作原理、API使用以及如何结合Java进行实际操作。 总结,Selenium结合Java是一种高效的Web自动化测试解决方案。通过学习和实践提供的实例,你将能够熟练掌握Selenium的使用...

    selenium2 python自动化测试实战修订

    10. **实战案例分析**:提供实际的Web应用测试案例,分析测试需求,设计测试方案,并演示如何使用Selenium Python进行实现和调试。 书中可能还涉及了持续集成工具如Jenkins的集成、测试报告的生成工具如Allure的...

    Selenium Documentation

    测试套件是由多个测试案例组成的集合,可以用来组织和管理测试案例。通过创建测试套件,可以更容易地执行和维护测试案例。 #### 三、Selenium IDE **安装和配置 Selenium IDE** - **安装**:作为 Firefox 的插件...

    python+selenium自动化入门.ppt

    1. **Selenium Core**:作为Selenium IDE和Selenium RC的基础,它负责DHTML测试案例的执行,具有类似数据驱动测试的效果。 2. **Selenium IDE**:这是Firefox的一个插件,提供了脚本录制功能,能够方便快捷地创建...

    pythonselenium自动化入门.pptx

    Selenium RC 的工作原理是通过 server 端和 client 端的交互实现的。首先,需要安装 Selenium server,使用命令 java -jar selenium-server-standalone-2.19.0.jar 启动 server。然后,使用 Python 等语言编写测试...

    Selenium2+Python自动化测试实战

    综上所述,《Selenium2Python自动化测试实战》不仅涵盖了自动化测试的基础概念和技术要点,还提供了丰富的实践案例,适合不同程度的学习者阅读和参考。无论是自动化测试新手还是有一定经验的测试工程师,都能从中...

    selenium 私房菜

    6. **深入理解Selenium RC工作原理**:这部分将深入探讨Selenium RC的内部工作机制,包括如何启动浏览器控制服务器,以及如何处理网络请求和响应。 7. **更多进阶主题**:后续章节可能会涵盖更多高级特性,如断言、...

    Selenium私房菜(新手入门教程)

    - **关键知识点**:Selenium RC 的工作原理、如何使用不同的编程语言编写测试脚本、执行测试案例的步骤等。 ##### 6. Selenium私房菜系列6 —— 深入了解 Selenium RC 工作原理 - **内容概述**:本章节将深入探讨 ...

    [全]selenium自动化测试与前端技术简介.docx

    通过了解和掌握 Selenium 的不同组件及其工作原理,测试工程师能够更有效地构建自动化测试框架,提高测试质量和效率。同时,熟悉前端技术如 HTML、CSS 和 JavaScript 对于编写精确的测试脚本至关重要。

    Selenium资料搜集

    2. **XPath教程**:详细解释XPath的工作原理、语法和使用技巧,如何在Selenium中高效地运用XPath进行元素定位。 3. **实战案例**:实际的Selenium测试脚本和项目,演示如何编写和执行自动化测试,以及如何处理各种...

Global site tag (gtag.js) - Google Analytics