Selenium 1.0 中可以使用多种语言编程, 当然前提是支持http库。在运行selenium1.0程序之前,我们得先启动selenium server端(selenium remote control),我们简称RC。
RC主要包括三个部分:launcher,http proxy,selenium core。其中selenium core是被selenium server嵌入到浏览器页面中的,selenium core内部是一堆javascript函数构成,通过调用这些函数来实现对浏览器的各种操作。
Selenium 1.0是第一个基于浏览器的开源自动化测试工具,由于其是由javascript实现的,所以只要是支持javascript的浏览器都可以很好的支持它。但是和其他工具一样,selenium也不是完美的,正所谓成也萧何败也萧何,正是由于它的这一特点,导致了他的缺点。每一个浏览器对于执行javascript都有很严格的安全限制,以防止用户被恶意脚本攻击。这也导致了selenium在某些场景下的测试工作变得很困难,比如IE下面的upload操作就不允许执行往输入框中填写文件的路径。主要有以下几点问题亟待解决:
1.没有原生的鼠标和键盘事件
2.XSS/HTTP同源数据问题
3.popup dialog问题
Webdriver项目是由Simon Stewart创建的,它是一个非常便捷的自动化测试工具。Webdriver对不同浏览器的处理方式和selenium有着明显的不同,selenium是不管什么浏览器都是javascript来处理,而webdriver是选择浏览器最容易接受的语言来处理。比如,在IE中,C++最合适,在firefox中,javascript最合适等等。通过灵活选择最合适的语言来处理多浏览器,我们可以很好的回避某些浏览器对javascript的安全限制。
而且webdriver不仅仅具有这些能力,它还能够调用操作系统API,尤其是当用户需要模拟鼠标和键盘进行真是的页面操作的时候,这项能力的作用尤为明显。把上面两款工具放到一起比较,优缺点就比较明显了。
Selenium要求真实的浏览器环境,而webdriver可以直接操作HTML unit驱动,大家都知道selenium启动firefox非常慢,而webdriver可以通过HTML unit在系统内存中迅速的执行,但是这两者都不方便调试。
Webdriver不支持并行测试,而selenium GRID可以搞定这个。Webdriver要求针对浏览器选择最合适的语言来编写脚本,
而众所周知,程序员总是希望使用自己擅长的语言来编写脚本,公司也不可能派多个脚本人员在一个项目中仅仅是为了多浏览器支持。因此,我们需要一款工具,它能够把两者的优点集合起来,这就是我们下面介绍的selenium2.0,即selenium1.0+webdriver。
selenium 2.0最显著的特点就是不用再启动server端了:它支持以下几种浏览器驱动:
AndroidDriver,ChromeDriver,EventFiringWebDriver, FirefoxDriver, HtmlUnitDriver,InternetExplorerDriver, IPhoneDriver, IPhoneSimulatorDriver, RemoteWebDriver