自动化测试由浅入深--基础篇之Selenium RC和web Driver实现原理

今天开始写自动化的东西,以后可能会穿插其他的东西,这样为了符合处于各个阶段的测试爱好者。今天笔者就开始讲自动化测试相关的东西了。今天先讲原理。

Selenium RC实现原理,我先在网络上找了一个图,如下所示:

大家可以清晰的看到,简单来说,就是我们先用编程语言,写好控制程序,然后通过Remote Control Server 去控制浏览器,按照自己写好的程序去执行。大家也可以看到,selenium支持很多语言,java,Ruby,Python,PHP等,你可以选择你喜欢的任何语言。

下面我们看看selenium1执行步骤:

1.测试工程师编辑好测试脚本。

2.执行脚本。

3.测试脚本发送访问网站的Http请求给中间件Remote Control Sever(简称RC)

4.RC收到请求,获取被访问网站的内容,并在网页中插入Selenium Core 的JavaScript 代码库,然后返回给执行测试的浏览器。

5.测试脚本在浏览器内部再调用 Selenium Core的测试代码逻辑,最后记录测试结果,完成测试。

大家似乎发现了一个问题,就是为什么会有步骤4?这是因为selenium1 工具的核心是基于javascript代码库实现的,这个库和被测试网站也是分离的,那么javascript的URL和被测试网站的域名就不一致,无法实现自动化测试,为了绕过浏览器的安装机制selenium1 用了代理来解决此问题。

其步骤如下:

  1. 执行脚本,selenium Server 发起请求。
  2. selenium Server的Launcher启动浏览器,并插入selenium Core的Javascript代码库,此时浏览器的代理设置为selenium Server的Http Proxy。Http Proxy 发送JS命令,让selenium Core 执行浏览器的操作。并执行制定的网页操作命令。
  3. 浏览器收到信息,于是发送Http请求给Http Proxy,请求新web页面。
  4. selenium Server 启动浏览器时设定了浏览器的代理访问地址为selenium Server的 Http Proxy,所以Selenium Server 会接受所有由它启动的浏览器发送请求。selenium Server 接收到浏览器发送的Http请求后,自己重组HTTP请求,获取对应的web页面。
  5. selenium SerVer的 Http Proxy把接受的web页面返回给浏览器。

上面selenium1的开发者巧妙的把javascrip代码库插入到被测试网页,真的非常聪明。

将来selenium1 那么就应该讲一下WebDriver (selenium2)的实现原理。

WebDriver 它不再使用Javascript的代码库注入,而是直接利用浏览器的内部接口来操作浏览器,必须依赖浏览器内部的Native Component,来实现把Web driver API 转化为浏览器的内部接口的调用。selenium1 采用Javascript的合成事件来处理页面元素的操作,而Webdriver使用的系统内部的接口或函数。由此可以看出,Webdriver能更好的模拟真实环境。

今天原理就先讲到这里,下一章可以讲一下,selenium1和webDriver的优缺点,以及自动化测试的目标。此篇文章摘之笔者 VX 公 众 号 王大哥自动化测试  欢迎检索关注,公 众 号完全免费,更新更早,且是系列的讲自动化测试。

原文地址:https://www.cnblogs.com/king44/p/11566796.html

时间: 2025-01-12 10:13:09

自动化测试由浅入深--基础篇之Selenium RC和web Driver实现原理的相关文章

转战物联网·基础篇05-通俗理解MQTT协议的实现原理和异步方式

??网络上搜索MQTT协议,会出现太多的解释,这里就不做官方标准释义的复制了.这一节我们从实战理解角度,通俗的将MQTT协议的作用及实现原理说一下,旨在可以快速理解MQTT协议.所以可能会出现很多看似不标准的解释,但是更容易理解MQTT的内涵,对MQTT十分精通者请忽略此文. ??在物联网项目中,经常出现的要求是"有限环境".什么意思呢,通俗说就是网络可能不太稳定,带宽也可能很小,网速也比较低,硬件MCU性能也很低,要求在这种情况下也能可靠联网传输信息.看到这里大家就会想到我前面提到的

第一章 基础篇:课时1:Web应用程序安全与风险

2007-2011间web漏洞排行 1.不完善的身份验证措施(62%):2.不完善的访问控制措施(71%):3.SQL注入(32%):4.XSS(94%):5.信息泄露(78%):6.CSRF(92%): 密码重用漏洞是在拿到web站后台或数据库,甚至服务器管理账号和口令后,放一些爆破工具在对方服务器上面,继续对服务器上面的web站进行口令爆破,如果口令相同的话,可以获取很多web站,原因在于很多管理员没有安全意识,用一套账号和口令管理所有web站. 原文地址:https://www.cnblo

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

前一篇已经比较详细讲述了如何使用Selenium RC进行Web测试,但到底Selenium RC是什么?或者它由哪几部分组成呢?? 一.Selenium RC的组成: 关于这个问题,我拿了官网上的一幅图来说明这个问题. Selenium RC主要由两部分组成: (1).Selenium Server: Selenium Server负责控制浏览器行为,总的来说,Selenium Server主要包括3个部分:Launcher,Http Proxy,Selenium Core.其中Seleniu

PHP实现微信公众平台开发—基础篇

PHP实现微信公众平台开发-基础篇 2 1课程介绍 2 2. 微信公众号账号介绍的申请流程详解 2 2.1微信三角色关系 2 2.2信息流的过程 2 2.4微信公众账号的认证 3 2.5订阅号的申请流程 3 3. 微信公众号的工作原理 3 3.1数据交互流程 3 3.2编辑模式和开发者模式的介绍 4 3.3编辑模式的简单演示 5 3.4接口介绍 5 4. 接入微信公众账号的API 5 1.验证配置介绍   5 2.验证参数介绍 5 3.填写验证配置 6 4.生成公网访问的脚本文件 6 5.验证代

《手把手教你》系列进阶篇之2-python+ selenium自动化测试 - python基础扫盲(详细教程)

1. 简介 这篇文章主要是分享讲解一下,如何封装自己用到的方法和类.以便方便自己和别人的调用,这样就可以避免重复地再造轮子. 封装(Encapsulation)是面向对象的三大特征之一(另外两个是继承和多态),它指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问. 就好比使用计算机,我们只需要使用计算机提供的键盘,就可以达到操作计算机的目的,至于在敲击键盘时计算机内部是如何工作,我们根本不需要知道. 封装机制保证了类内部

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

继续前一篇的问题,为什么Selenium RC中的Selenium Server需要以这种代理服务器的形式存在?其实,这和浏览器的“同源策略”(The Same Origin Policy)有关. 一.什么是同源策略  同源策略,它是由Netscape提出的一个著名的安全策略,现在所有的可支持javascript的浏览器都会使用这个策略. 为什么需要同源策略,这里举个例子:    假设现在没有同源策略,会发生什么事情呢?大家知道,JavaScript可以做很多东西,比如:读取/修改网页中某个值.

自动化基础普及之selenium是啥?

Selenium 并不像QTP那样让人一下子就明白是什么?它是编程人员的最爱,但它却对测试新手产生了很大的阻碍. Selenium 是啥? Selenium RC是啥? Webdriver 又是啥? RC 和 Webdriver 是啥关系? Webdriver 和编程语言啥关系? Selenium 能并行执行脚本嘛? Selenium 能做移动端自动化么? 这里虫师用简单方式,告诉你,他们错综复杂的关系.理顺了它们之间的关系才能真正使用它. Selenium 是什么? Selenium 是web

转载 基于Selenium WebDriver的Web应用自动化测试

转载原地址:  https://www.ibm.com/developerworks/cn/web/1306_chenlei_webdriver/ 对于 Web 应用,软件测试人员在日常的测试工作中,需要大量的手动操作来验证某些功能.开发人员在开发过程中,需要访问其应用并且验证其功能是否正常运行,反复调试重复验证.系统维护人员也需要经常访问其应用,以确保系统的正常运行.如上所述的这些操作需要花费大量的时间和人力,如能引入自动化测试代替人工重复操作,将极大地提高团队的生产效率.在本文中,我们将介绍

shell脚本编程之基础篇(二)

shell脚本编程之基础篇(二) ============================================================================== 概述: ============================================================================== 退出状态 ★进程使用退出状态来报告成功或失败 ◆0 代表成功,1-255代表失败 ◆$? 变量保存最近的命令退出状态 (查看:echo $?)