购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.4 Selenium基本原理

Selenium 1的实现机制是使用Selenium RC作为代理,通过Selenium RC向目标页面注入JavaScript(Selenium Core)的形式,来达到驱动浏览器进行自动化测试的效果。由于Selenium 1现在已经很少被使用,所以这里只简要分析下Selenium 2的运行原理。

在Selenium 2中原来的Selenium RC的角色被WebDriver替代了,即不再需要使用代理的形式注入Selenium Core到目标页面,而是直接通过WebDriver来驱动浏览器。这里的WebDriver指的是可以驱动浏览器的程序或插件,每一种浏览器都有一个对应的WebDriver,需要在执行测试脚本之前下载并安装好对应的WebDriver才能正常驱动对应的浏览器。

WebDriver之所以能直接驱动浏览器而不再需要代理欺骗,是因为它们使用了各种方法来实现对浏览器底层API的调用,从而使得WebDriver绕过了同源策略和JavaScript沙箱的限制。此外,WebDriver以提供服务的形式并通过JSON Wire Protocol 协议来与测试脚本进行通信。图1-4则是Selenium 2完整的通信结构。

图1-4 Selenium 2通信结构

Selenium 1能驱动浏览器是因为所有浏览器对JavaScript都是兼容的。而WebDriver驱动不同浏览器的原理已经有所变化了,它是针对每一种浏览器开发一个对应Driver程序,统称为WebDriver。

这个Driver可能是exe文件,例如IE和Chrome的Driver,也可能是一个插件,例如Firefox的Driver。如果希望Selenium 2能在本地机器上执行,那么必须在本机上安装相应浏览器的WebDriver。图1-5为WebDriver的驱动流程。

图1-5 WebDriver驱动流程

其中,每一个Driver都是一个Server,它们启动后会监听一个默认的端口并等待测试脚本发送指令请求,并在接收到请求之后会根据指令进行相关的浏览器接口调用。

在执行测试脚本时并不需要手动启动这个Driver进程,实际上它会在测试脚本正式执行测试步骤之前自动启动。所以在执行测试脚本的时候虽然没有启动Driver进程,但在后台其实已经被启动了,可以通过在执行测试脚本期间查看进程管理器来验证它。

当然,也可以手动启动这个Driver程序,并使用测试脚本与之进行通信,来执行具体的测试步骤。具体的使用示例在后面章节会有介绍。 IDJwcvBQcU/1UPxipGobBSB18mnHX22fM7d7MnpocMXffUpAQ6CoFyXSAUr6TlLD

点击中间区域
呼出菜单
上一章
目录
下一章
×