Selenium的前世今生

Selenium的前世今生

Selenium1.x的诞生

2004年ThoughtWorks公司的一个测试工程师‘Jason Huggins’为了减少工作量、自己实现了基于JavaScript代码库;用这套代码库可以进行页面交互操作、并且可以重复的在不同浏览器上进行操作;Selenium1.0就诞生了。

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。
正如Seleniumhq官网所说、selenium不能解决如文件上传或下载,弹出框和对话框这样的操作。

webdriver的诞生

2006年一个来至Google的工程师‘Simon Stewart’做了一个叫着‘webdriver’的项目,这个项目可以直接让测试工具调用浏览器本身提供的内置方法、以此来操作浏览器;

‘webdriver’提供了完全另外的一种方式与浏览器交互。那就是利用浏览器原生的API,封装成一套WebDriver API,直接操作浏览器页面里的元素,甚至操作浏览器本身(截图,窗口大小,启动,关闭)。由于使用的是浏览器原生的API,速度大大提高,而且调用的稳定性交给了浏览器厂商本身,显然是更加科学。然而带来的一些副作用就是,不同的浏览器厂商,对Web元素的操作和呈现多少会有一些差异,这就直接导致了WebDriver要分浏览器厂商不同,而提供不同的实现。例如Firefox就有专门的FirefoxDriver,Chrome就有专门的ChromeDriver等等

从‘webdriver’诞生之日就和‘Selenium’是竞争对手的关系;

Selenium WebDriver的诞生

2008年‘Selenium1’和‘webdriver’2个项目进行了合并、就出现了我们大部分人见到的‘Selenium webdriver’(简称WebDriver)。
Selenium2 = Selenium + webdriver

Selenium2是selenium1的升级版本;向下兼容Selenium的所有功能、同时提供WebDriver的API来操作浏览器。

Selenium3的出现

2016年Selenium3诞生、Selenium 团队13年就放出风声要发布selenium3.0版本、直到2016年Selenium beta版本才发布。

  • Selenium3去掉了RC的支持
  • 全面支持Java 8
  • 支持macOS下的safari浏览器、并且apple官方提供‘safaridriver’
  • 支持Edge浏览器、MS官方提供‘Microsoft WebDriver’的官方版本
  • 支持Mozilla官方提供的‘geckodriver’来支持firefox浏览器

可以看到加上Chrome的原生支持、现在主流浏览器厂商都单独为Selenium3出了官方Driver版本、也就意味着这些浏览器厂商已经认可了Selenium在WEB自动化方面的地位;
如果你想学习WEB自动化方面的技能、那么Selenium可能是绕不过去的了。