selenium1.0 vs 2.0

计划使用selenium做一个web端的自动化测试,开始在网上找一些资料的时候,很多说到selenium IDE与selenium RC,后来发现,原来这是selenium1.0版本,在网上查找selenium1.0与selenium2.0的区别,总结如下:

selenium1.0 架构

selenium1.0 vs 2.0_第1张图片

从上图可以看出,selenium1.0包括:selenium IDE、selenium Grid、selenium RC三部分
其中:
selenium IDE:firefox的一个插件,可以录制和回放脚本
selenium Grid:用于实现分布式测试。使用Grid,可以同时在多台机器上和异构环境中并行运行多个测试事例
selenium RC:selenium核心部分,可以实现利用selenium的代理服务器来实现访问浏览器实现自动化测试

selenium RC可分为:Client和Selenium Server

  1. client:实现自动化脚本
  2. Selenium Server:负责控制浏览器行为

Selenium Server分为3部分

  1. Launcher:启动浏览器
  2. Http Proxy:selenium Server的Http代理
  3. Core:嵌入到浏览器的js代码

Launcher启动浏览器,将core嵌入到浏览器,并把浏览器代理设置为selenium Server的Http Proxy

Selenium1.0技术分析

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

selenium RC 在浏览器中运行JavaScript应用,使用浏览器内置的JavaScript 翻译器来翻译和执行selenese命令(selenese 是selenium命令集合)

Selenium1.0不能处理的事件

  1. 本机键盘和鼠标事件
  2. 同源策略XSS/HTTP(S)
  3. 弹出框,对话框(基本身份认证,自签名的证书和文件上传/下载)

selenium2.0 架构

Selenium 2.0 则是把selenium 1.0中selenium RC替换为了WebDriver
Selenium2.0进行了架构的调整和升级:
Selenium2.0 = Selenium1.0 + WebDriver(Selenium2.0合并了这两个项目)

WebDriver

由Simon Stewart 提出的,它是一个轻便简洁的自动化测试框架。
WebDriver利用浏览器原生的API,封装成一套更加面向对象的SeleniumWebDriverAPI,直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的)
由于使用的是浏览器原生的API,速度大大提高,而且调用的稳定性交给了浏览器厂商本身,显然是更加科学。然而带来的一些副作用就是,不同的浏览器厂商,对Web元素的操作和呈现多少会有一些差异,这就直接导致了SeleniumWebDriver要分浏览器厂商不同,而提供不同的实现。例如Firefox就有专门的FirefoxDriver,Chrome就有专门的ChromeDriver等等

你可能感兴趣的:(#,AT)