天天看点

Selenium1、Selenium2、Selenium3的区别

一、 selenium 1的原理

  selenium 1 包括以下两部分:selenium server、 client libraries组成

  1. selenium server

  selenium server负责控制浏览器的行为。主要有launcher,http proxy,selenium core。selenium core使用selenium server嵌入到浏览器页面中。实质上,selenium core是由js函数组成,这样我们可以实现用程序对浏览器进行操作。

  2. client libraries

  编写测试用例时控制selenium server的库

  3. selenium rc与testcase之间的关系

Selenium1、Selenium2、Selenium3的区别

  4. testcase 工作过程

  (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 2-selenium webdriver原理

  1. 直接利用浏览器原生的api,封装成更加面向对象的selenium webdriver api,直接操作浏览器页面里的元素,甚至操作浏览器本身。如:截屏、窗口大小、启动、关闭、安装插件、配置证书等。

  2. selenium 2是基于对象的测试。不同的对象拥有不同的操作方法。selenium 1则更多的基于方法的api。

  3. webdriver还支持android和ios上的浏览器

  4. 便于与junit和testng结合

  5. selenium grid实现多平台同时测试,满足兼容性测试需求

二、 selenium 3原理

1.selenium 3.0有了更新的特性加入,尤其是对edge和safari原生驱动的支持,edge驱动由ms提供,safari原生驱动由apple提供。

2.在最新的firefox方面,开始支持mlzilla的geckodriver驱动,来驱动firefox的控制。

3.selenium3.0可以支持firefox47以上版本,但是许要下载geckodriver.exe驱动,并添加到环境变量path下

selenium 1.0包括:selenium ide、selenium grid、selenium rc三部分。 selenium ide:firefox的一个插件,可以录制和回放脚本。 selenium grid:用于实现分布式测试。利用grid,可以很方便地同时在多台机器上和异构环境中并行运行多个测试事例。 selenium rc:selenium 的核心部分,可以实现利用selenium的代理服务器来实现访问浏览器实现自动化测试。 其中:selenium rc分为:client和selenium server。 client实现自动化脚本,selenium server负责控制浏览器行为。 selenium server分为3部分。 launcher:启动浏览器 http proxy:selenium server的http代理 core:嵌入到浏览器的js代码。 有launcher启动浏览器,将core嵌入到浏览器,并把浏览器代理设置为selenium server的http proxy。

使用的是javascript注入技术与浏览器打交道,需要selenium rc启动一个server,将操作web元素的api调用转化为一段段javascript,在selenium内核启动浏览器之后注入这段javascript。开发过web应用的人都知道,javascript可以获取并调用页面的任何元素,自如的进行操作。由此才实现了selenium的目的:自动化web操作。这种javascript注入技术的缺点是速度不理想,而且稳定性大大依赖于selenium内核对api翻译成的javascript质量高低。