Selenium面试题:请描述WebDriver与Selenium Server之间的关系

前言

这些是过去学习和工作中积累的个人总结,不过可能会存在一些主观臆断,如果有说错的地方,请指出来哦!

回答

回答之前,先看下Selenium的演变历史。

image

Selenium Server是一个控制浏览器行为的工具,最早是在Selenium1.0中集成在Selenium RC中的。它包括三个部分:Launcher、Http Proxy和Selenium Core。其中,Selenium Core是一组Javascript函数的集合,被注入到浏览器页面中,通过调用这些函数,可以实现用程序对浏览器进行操作。自动化测试的过程是:首先,启动Selenium Server并将操作web元素的API转化为Javascript函数;接着,启动Selenium内核并注入这些Javascript函数,即Selenium Core;最后,可以通过这些函数获取并调用页面的任何元素,自如地进行操作。

WebDriver,一般说的是指的是Selenium WebDriver。在Selenium2.0中集成。是一组开源API,用于Web应用程序自动化测试。提供了实现自动定位元素、模拟用户在浏览器中的操作等行为,实现了对Web应用程序的自动化测试。类似于编译器的功能,将高级语言(测试脚本)转化为浏览器可以理解的机器语言,从而实现对浏览器的操作行为。

Selenium WebDriver和Selenium Server在具体上使用的区别在于:

如只使用WebDriver的API,那么是不需要Selenium Server的,或者如测试脚本和浏览器在同一台机器上运行,并且只使用WebDriver的API,也是不需要Selenium Server的,WebDriver会直接运行浏览器。

但在某些情况下,必须需要用到Selenium Server。

如:需要在远程机器的浏览器上执行测试代码时,需要用到HtmlUnitDriver但却没有使用Java开发脚本时以及使用Selenium Grid测试分发到多台机器或虚拟机或者连接到一台远程的计算机上,在一个特定有浏览器版本上运行,此时就需要使用Selenium Server了。

说明:Selenium Grid是允许在多台计算机上并行运行测试, 并集中管理不同的浏览器版本和浏览器配置。其中Grid由一个中心(hub)和一到多个节点(Node)组成。专门负责分布式执行测试代码的组件。它会接受Agent的注册;这个Agent就是Selenium Server,即可以提供测试能力的宿主机器。之后,Selenium Grid就可以接受来自Client端的调用;这个Client就是测试脚本,即驱动测试执行的指令。最后,Selenium Grid根据Client端的调用指令来驱动Agent的行为;它的特点是可以同时支持多个Agent和Client,这样就可以同时有多份测试脚本在多个Agent上并行执行,从而达到分布式执行的效果。而并行执行测试的好处就是提高了测试效率。