selenium1.x:这个时候的selenium,使用的是JavaScript注入技术与浏览器打交道。
需要Selenium RC启动一个Server,将操作Web元素的API调用转化为一段段Javascript,在Selenium内核启动浏览器之后注入这段Javascript。
Javascript可以获取并调用DOM的任何元素,自如的进行操作。
由此才实现了Selenium的目的:自动化Web操作。
这种Javascript注入技术的缺点是速度不理想,而且稳定性大大依赖于Selenium内核对API翻译成的Javascript质量高低。
selenium2.x:相比于selenium1.x,2.x版本整合了webdriver以及原版selenium。
两个项目合二为一,虽然名字还叫selenium,但也可以叫Webdriver。
这个版本的selenium是利用浏览器原生的API,封装成一套更加面向对象的Selenium WebDriver API。
直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的)。
由于使用的是浏览器原生的API,速度大大提高,而且调用的稳定性交给了浏览器厂商本身,显然是更加科学。
然而带来的一些副作用就是,不同的浏览器厂商,对Web元素的操作和呈现多少会有一些差异,这就直接导致了Selenium WebDriver要分浏览器厂商不同,而提供不同的实现。
selenium3.x:相比于selenium1.x,2.x版本有了更新的特性加入。
对Edge和safari原生驱动的支持,Edge驱动由MS提供,safari原生驱动由Apple提供。
在最新的Firefox方面,开始支持Mlzilla的geckodriver驱动,来驱动Firefox的控制。
selenium3.0可以支持firefox47以上版本,但是许要下载geckodriver.exe驱动,并添加到环境变量path下。