计划使用selenium做一个web端的自动化测试,开始在网上找一些资料的时候,很多说到selenium IDE与selenium RC,后来发现,原来这是selenium1.0版本,在网上查找selenium1.0与selenium2.0的区别,总结如下:
从上图可以看出,selenium1.0包括:selenium IDE、selenium Grid、selenium RC三部分
其中:
selenium IDE:firefox的一个插件,可以录制和回放脚本
selenium Grid:用于实现分布式测试。使用Grid,可以同时在多台机器上和异构环境中并行运行多个测试事例
selenium RC:selenium核心部分,可以实现利用selenium的代理服务器来实现访问浏览器实现自动化测试
selenium RC可分为:Client和Selenium Server
Selenium Server分为3部分
Launcher启动浏览器,将core嵌入到浏览器,并把浏览器代理设置为selenium Server的Http Proxy
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命令集合)
Selenium 2.0 则是把selenium 1.0中selenium RC替换为了WebDriver
Selenium2.0进行了架构的调整和升级:
Selenium2.0 = Selenium1.0 + WebDriver(Selenium2.0合并了这两个项目)
由Simon Stewart 提出的,它是一个轻便简洁的自动化测试框架。
WebDriver利用浏览器原生的API,封装成一套更加面向对象的SeleniumWebDriverAPI,直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的)
由于使用的是浏览器原生的API,速度大大提高,而且调用的稳定性交给了浏览器厂商本身,显然是更加科学。然而带来的一些副作用就是,不同的浏览器厂商,对Web元素的操作和呈现多少会有一些差异,这就直接导致了SeleniumWebDriver要分浏览器厂商不同,而提供不同的实现。例如Firefox就有专门的FirefoxDriver,Chrome就有专门的ChromeDriver等等