selenium下载地址统计:

chromedriver:http://chromedriver.storage.googleapis.com/index.html?path=2.31/

geckodriver:   https://github.com/mozilla/geckodriver/releases

一.selenium框架结构

selenium 分为三大架构:SeleniumIDE、Selenium WebDriver、Selenoium Grid

  • Selenium IDE:录制和回放脚本,可以模拟用户对页面的真实操作,区别于其他工具:是通过拦截http请求。
  • 一般只把录制脚本当作一个辅助功能,因为一个UI节点的细微变化,都可能导致自动化测试工具无法识别,当测试项目项目大时,定位、更新十分困难。
  • 其次,录制的脚本有时候人工难以理解。
  • Selenium Grid:实现在多台机器上、和异构环境中并行执行测试用例。并行执行不仅节省时间,而且可以同时在不同的浏览器、平台上运行自动化测试脚本。
  • Selenium Web Driver:针对各个浏览器而开发,通过原生浏览器支持或者扩展(Chrome webDrive、FireFox WebDriver)直接控制浏览器

          VS Selenium RC(Selenium1.0):在浏览器中运行javaScript,使用浏览器内置的JavaScript来翻译和执行selense

selenium 技术架构 selenium3原理_浏览器内核

 

二、selenium运行机制,(基于firefox)

为了方便讲解,下面将会基于firefox进行讲解。

2.1 基础知识

1.浏览器内核

“浏览器内核”主要指渲染引擎(Rendering Engine),负责解析网页语法(如HTML、JavaScript)并渲染、展示网页。因此,所谓的浏览器内核通常也就是指浏览器所采用的渲染引擎,渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息。不同的浏览器内核对网页编写语法的解析也有所不同,因此同一网页在不同的内核浏览器里的渲染、展示效果也可能不同。

  浏览器内核种类繁多,商用的加上非商业的免费内核,大约会超过10款,目前主流的四大浏览器内核Trident、Gecko、WebKit以及Presto。Gecko就是firefox的内核。

2.Marionette

Marionette是Mozilla的Gecko引擎的自动化驱动程序。它可以远程控制Gecko平台(如Firefox)的UI或内部JavaScript。它可以控制chrome(即菜单和功能)或内容(浏览上下文中加载的网页),提供高水平的控制和复制用户操作的能力。除了在浏览器上执行操作之外,Marionette还可以读取DOM的属性和属性。

3.geckodirver

geckodriver是Selenium FirefoxDriver的下一代。它是由Marionette支持的Geodo / Firefox远程协议。使用W3C WebDriver协议兼容客户端与基于Gecko的浏览器交互的代理。可见:它是充当本地和远程之间的代理,并将呼叫转换为Firefox远程协议

2.2 selenium运行机制-----webDdriver模式

webDriver是按照client/server模式设计的。client是我们的测试脚本,发送请求;server就是打开的浏览器,用来接收client的请求并作出响应。

具体的工作流程:

  1. webDriver调用geckodriver程序打开浏览器并绑定到指定端口。启动的浏览器作为远程服务器remote server
  2. client通过CommandExecuter json 一段字符串给远程服务器的侦听端口(the wire protocal)
  3. 远程服务器根据原生的浏览器组件将字符串转化为浏览器的本地(native)调用

所以web Driver用到的协议

  1. 打开浏览器时:HTTP协议
  2. client端发送json请求到远程服务器的侦听端口:the wire protocol

其中:

  • 有线协议:指的是从点到点获取数据的方式,是应用层的协议。
  • HTTP协议:是用于从服务器传输超文本标记语言HTML到客户端的通信协议。是一个应用层协议,由请求/响应构成,是一个标准的客户/服务器模式。是一个无状态的协议。(无状态:对事务没有记忆能力,不会保存这次传输的信息——节约内存)