理论教育 Selenium自动化测试:从入门到精通

Selenium自动化测试:从入门到精通

时间:2023-10-25 理论教育 版权反馈
【摘要】:Selenium自动化测试工具自此诞生,并且在2004年基于Apache 2.0开源协议对外发布,正式命名为Selenium Core。为了解决这个问题,Jason Huggins所在的研发团队编写了HTTP代理,以让Selenium截获所有的HTTP请求。Selenium RC与WebDriver最为显著的差异体现在API的组织上。Selenium RC采用了基于字典方式的API,而WebDriver的API则更加地面向对象。此外,Selenium Core基本上是JavaScript应用,主要运行在浏览器的安全沙箱中。

Selenium自动化测试:从入门到精通

早在2004年,Jason Huggins还供职于ThoughtWorks公司。他当时正在开发公司内部的时间和费用系统,该系统使用了大量的JavaScript代码来进行构建。虽然当时Internet Explorer还占有绝对的统治地位,但是ThoughtWorks公司内部有不少员工在使用其他类型的浏览器,尤其是Mozilla基金会的浏览器。当员工使用不同的浏览器访问这个时间和费用系统时,一旦发现异常,就会提交Bug报告。当时的开源测试工具一般只支持占主流地位的Internet Ex-plorer浏览器,或者仅仅只是模拟浏览器的行为,如HttpUnit。购买商业工具授权的成本对于这个小型项目的有限预算而言也不太现实。

正是在这样的情况下,Jason Huggins和他所在的团队决定自主开发一个基于浏览器并且采用JavaScript编程语言的测试工具。Selenium自动化测试工具自此诞生,并且在2004年基于Apache 2.0开源协议对外发布,正式命名为Selenium Core。

Selenium Core的设计之初并不能绕过浏览器的“同源”规则,因此开发人员不得不将待测试的产品、Selenium Core和测试脚本均部署到同一台服务器上来完成自动化测试工作。但在实际研发过程中,将上述各项分拆在不同的机器上运行的需求却与日俱增。为了解决这个问题,Jason Huggins所在的研发团队编写了HTTP代理,以让Selenium截获所有的HTTP请求。使用HTTP代理的优势之一就是可以绕过浏览器的“同源”规则,让待测试的产品、Selenium Core和测试脚本三者分散在不同的机器上。此外,这个代理的设计方式还使得采用多语言编写Selenium测试脚本的能力成为可能,因为测试脚本只需要关心将标准的HTTP请求发送到指定的URL即可,而Selenium本身并不需要关心这些HTTP请求是由什么程序语言编写而成。正是由于这种离散的分布方式使得测试脚本可以远程控制浏览器并执行测试用例,Selenium Remote Control也因此得名,也可简称为Selenium RC。Selenium RC主要包括两个部分:一个是Selenium RC Server;另一个是提供各种编程语言绑定的客户端驱动。

时间一晃就到了2007年年初,ThoughtWorks公司发布了酝酿已久的WebDriver雏形。WebDriver的设计理念是将端到端的测试与底层具体的测试工具隔离开,并采用了设计模式中常见的适配器(Adapter)模式来达到目标。(www.daowen.com)

Selenium RC与WebDriver最为显著的差异体现在API的组织上。Selenium RC采用了基于字典方式的API,而WebDriver的API则更加地面向对象。此外,Selenium Core(Selenium RC的核心)基本上是JavaScript应用,主要运行在浏览器的安全沙箱中。而WebDriver则是原生绑定到浏览器中并绕开了浏览器的安全模型,其代价就是框架本身的开发投入显著增加,每个浏览器的WebDriver都需要单独实现。

常言道,合久必分,分久必合。历史的车轮运转到公元2009年8月,Selenium RC和WebDriver项目宣布合并,也就是后来大家熟知的Selenium WebDriver。合并以后,WebDriv-er也支持了多语言绑定,克服了最初只支持Java绑定的缺陷。同时Selenium WebDriver除了支持PC上传统的浏览器Chrome、Firefox、Internet Explorer,还支持嵌入式设备上基于Web-kit内核的浏览器,包括Android、iOS上的浏览器等。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈