selenium框架是目前基于web自动化的开源自动化工具。它能提供一系列函数,自动化模拟浏览器的各式各样的操作。
1,支持多浏览器:firefox,chrome,IE,Safari等
2,支持多种脚本语言:php,python,java,c#,ruby等
3,支持多操作系统:linux,ios,android,windows
以下为selenium suite的结构简图:
1,selenium IDE。其实是firefox浏览器上的一个插件,支持通过界面进行录制,并将录制内容翻译成自动化测试脚本(使用selenium的一系列函数)。对没有编程经验的人来说,可以不需要手写具体脚本。
目前使用较少。
2,selenium RC作为框架中的核心部分,支持许多语言的自动化测试脚本。并通过自身的服务器去调用代理服务器执行浏览器操作。
- SeleniumRC分为ClientLibraries和SeleniumServer。
- ClientLibraries主要封装了调用SeleniumServer库方法的方法函数,便于脚本编写。
- SeleniumServer引用了SeleniumRemoteServer这样一个代理服务器。SeleniumServer分为 Launcher,Http Proxy,Core(本质上就是一个JS函数集合)。javascript脚本注入和 与远程Server通讯都通过SeleniumRC Server实现。
Selenium RC使用的是JavaScript注入技术与浏览器打交道,需要Selenium RC启动一个Server,将操作Web元素的API调用转化为一段段Javascript,在Selenium内核启动浏览器之后注入这段Javascript。这种Javascript注入技术的缺点是速度不理想,而且稳定性大大依赖于Selenium内核对API翻译成的Javascript质量高低。
3,Webdriver 它提供了完全另外的一种方式与浏览器交互。那就是利用浏览器原生的API,封装成一套更加面向对象的SeleniumWebDriver API,直接操作浏览器页面里的元素。由于使用的是浏览器原生的API,速度大大提高,而且调用的稳定性交给了浏览器厂商本身,显然是更加科学。
然而带来的一些副作用就是,不同的浏览器厂商,对Web元素的操作和呈现多少会有一些差异,这就直接导致了Selenium WebDriver要分浏览器厂商不同,而提供不同的实现。例如Firefox就有专门的FirefoxDriver,Chrome就有专门的ChromeDriver等等。