51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 5565|回复: 6
打印 上一主题 下一主题

菜鸟学自动化测试(七)----selenium RC 工作原理

[复制链接]
  • TA的每日心情
    无聊
    昨天 09:05
  • 签到天数: 1050 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2015-12-14 13:18:40 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
    关于selenium RC环境搭建(基于java语言),我在系统的学习selenium之前就已经做了,并在我的这个系列的文章中可以找到。那是照着一位前辈的视频操作完成的,我详细的记录的操作步骤。
    在这里我们一起了解一下selenium RC的工作原理。

    简介
    那么之前学习的了selenium IDE与selenium命令,那么是不是我们用selenium IDE就可以完成我们的所有自动化测试工作了呢?No !Selenium IDE 没我们认为的那么强大,在实际的项目中会有各种复杂的操作,如条件判断、循环、读写文件、查询数据库和E—mail邮寄测试报告。这些都不是selenium IDE简单的录制就能完成的。
    Selenium RC可以适应更复杂的自动化测试需求,而不仅仅是简单的浏览器操作和线性执行。Selenium RC 能够充分利用编程语言来构建更复杂的自动化测试案例。

    Selenium RC工作原理

    那么Selenium RC组件是如何运转的,以及他们在测试案例运行过程中扮演什么角色。




    说明客户端库文件将命令传递给server。接着server使用selenium-Core的javaScript命令传递给浏览器,浏览器会使用自带的javaScript翻译器来执行selenium命令。这意味着测试脚本中的selenese操作和验证将被执行。


    * Selenium server
    它负责启动和关闭浏览器,解释和运行从测试程序传来的selenese命令,就像HTTP代理一样,截取和验证浏览器与待测应用(AUT)之间的HTTP消息。

    在测试程序打开浏览器时(使用客户端库文件的API函数),RC server绑定 selenium Core并自动将它嵌入到浏览器中。selenium Core是一个javaScript程序,实际上市一系列javaScript函数,它们使用浏览器内置的javaScript翻译器来翻译和执行selenese命令。
    * 客户端文件

    客户端库文件提供编程接口。允许你使用自己编写的程序来运行selenese命令,对于不同的语言都有对应的客户端库文件。类似于数据库方言包的概念,如果你想用java操作数据库,对于不同的数据库,需要导入不同的数据库驱动jar文件,mysql有mysql的方言包,DB有DB的方言包。

    客户端库文件获取一条selenise命令,并将它传递给selenium Server ,以便执行一个指定操作或者基于待测应用(AUT)进行测试。客户端库文件收到命令的执行结果,在将其传给你的测试程序。程序接收到结果后,将它保存在变量中。接着报告成功还是失败,如果结果是意料之外的失败,还能有针对性地采取正确措施。

    因此要创建测试程序,你只要使用客户端库文件的API来编写程序,程序会去运行一系列selenium命令,当然selenium IDE录制的内容生成selenese测试脚本,可以转换成不同测语言脚本。


    Selenium RC 架构

    下面我们来了解隐藏在selenium RC背后的技术实现。要了解selenium RC Server 工作的细节,需要我们理解下面几个概念。

    1. 同源规则
    Selenium面临的主要限制就是同源规则,市场上的每一款浏览器都应用了这一安全限制。其目的是确保一个站点的内容不会被另一个站点的脚本所访问。同源规则专注于确保浏览器加载的任何代码,都只能在同一站点内部进行操作。假如你在一个浏览器的一个选项卡内打开了一个网上银行的页面(www.yinhang.com)。又在另选项卡上不小心打开了一个挂马的页面(www.guama.com),那么挂马的页面是不能操作网上银行页面的内容,因为引入了同源规则。所以,他们不能相互作用。如果不引入同源规则,我们可以想象用户很生气,后果很严重。

    要在这一规则下工作,selenium Core必须与待测系统在同一源中。在历史上,selenium Core被这一问题所限制,因为它是用javaScrpt实现的。但是selenium RC 没有被同源规则所限制,它使用selenium Server作为单利来回避这一问题,“哄骗”浏览器,让浏览器以为自己在server提供的单一站点上工作。
    同源:相同的协议、端口、域名

    感兴趣的同学google“同源规则”和“XSS(跨站点执行脚本)”相关技术

    2. 代理注入

    selenium 用来规避同源规则的第一种方法是代理注入,在代理注入模式下,selenium Server 像客户端配置的HTTP代理一样工作,它位于浏览器和待测系统之间。接着其伪造待测系统的URL(集成selenium Core 和一系列测试案例并加以传递,它们就像同源一样)

    代理作为第三者,在双方间传递信息,它表现的像一个“web服务器”,想浏览器传递待测系统。作为代理selenium Server ,它拥有篡改待测系统真实URL的能力。

    浏览器启动时,使用配置的profile,其中已经设置localhost:4444作为HTTP代理,这就是为什么任何来自浏览器的HTTP请求都会经过selenium Server,而且HTTP响应也来自selenium Server而非真实的服务器。



    (1)客户驱动与selenium RC Server之间建立起一个链接。
    (2)Selenium RC Server 启动浏览器,并在浏览器加载页面中注入了Selenium Core 的javaScript
    (3)客户端驱动给Server传递一条Selenese命令
    (4)客户端驱动个Server解释命令,并触发对应的javaScript在浏览器中执行。
    (5)Selenium Core指示浏览器执行第一条指令,例如打开一个待测系统页面。
    (6)浏览器接收到打开请求后,向Selenium RC Server(作为浏览器的HTTP代理),要求web站点内容。
    (7)Selenium RC Server与web服务器通信,请求页面,并且一旦收到响应就将页面传递给浏览器,但它会篡改源,是页面看上去好像来自于与selenium Core同源的服务器。
    (8)浏览器接收到web页面后,就在保留的框架\窗口中展示页面。

    3. 提高浏览器权限

    这一方式下的工作流与代理注入十分相似,区别在于浏览器以特殊模式-------“高特权模式”启动。它允许浏览器做一些通常不被允许的事情,如XSS。通过这个浏览器模式,Selenium Core 可以直接带卡待测系统,并读取和操作其中的内容,而不需要通过Selenium RC Server来传递整个待测系统。


    (1)客户驱动与selenium RC Server之间建立起一个链接。
    (2)Selenium RC Server启动浏览器,其实用的URL会在页面中加载 Selenium Core
    (3)Selenium Core 从客户端启动得到第一条指令(通过Selenium RC Server)
    (4)Selenium Core 执行第一条指令。
    (5)浏览器接到打开请求,向web服务器请求页面,一旦浏览器接收到web页面后,就在保留的框架\窗口中展示页面。
    ===========================================================================
    图不优雅,但也是自己花费一个多小时画的。
    关于selenium RC 的工作原理。没有hyddd将的好,也没他理解的深入。但也算是自己小小的总结。

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏7
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2016-11-22 09:27
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    7#
    发表于 2016-7-13 16:39:52 | 只看该作者

    我也是没看懂
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2016-11-22 09:27
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    6#
    发表于 2016-7-13 16:39:39 | 只看该作者

    我也是没看懂
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2016-11-22 09:27
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    5#
    发表于 2016-7-13 16:39:30 | 只看该作者

    我也是没看懂
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2016-11-22 09:27
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    4#
    发表于 2016-7-13 16:39:15 | 只看该作者

    我也是没看懂
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2016-12-12 09:47
  • 签到天数: 80 天

    连续签到: 1 天

    [LV.6]测试旅长

    2#
    发表于 2016-4-22 10:40:46 | 只看该作者
    看不大懂呢,亲
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-22 16:14 , Processed in 0.080669 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表