Selenium体系结构的疑惑及解答-自动化测试
更新时间:2022-04-26 09:06:58 作者:多测师 浏览:152
一直以来都觉得Selenium只是一个web browser自动化测试框架,但最近实际使用中接触到Appium,Selenium Server等以前没接触过的新的和selenium有关的工具,开始觉得Selenium不仅仅是一个browser自动化测试框架。因此去研究了一下Selenium官网的介绍及其历史。
疑惑的地方:
Selenium既然是为了做浏览器自动化测试,为何会有Appium这样的测试手机app的工具?
Selenium Server、各种浏览器的Driver之间有什么关系?
Selenium RC又是什么?
解答步骤:
Selenium的介绍:
简单地说,Selenium能实现浏览器自动化操作。它主要是以测试为目的来自动化web应用,但也可以做其他事情。好吧,这个对解答上面的疑惑没有任何帮助
Selenium历史
Selenium在2004年由Jason Huggins在工作中创造出来。最开始的目的是节省手工重复测试的时间,实现方式是javascript库。
但随着web技术发展及浏览器对javascript的种种限制,javascript库的结构导致Selenium越来越难以满足自动化测试的需求。
然后在2006年,Simon Stewart在google创建了WebDriver项目。Selenium在Google中非常普及,但它的局限性让Simon产生让测试工具直接调用浏览器的原生(Native)方法,来打破Selenium的局限性。WebDriver项目就是为了解决Selenium的痛点而创建的。
然后在2008年,Selenium和WebDriver合并了。合并后的Selenium就是现在大家使用的Selenium2。合并的原因主要是:
WebDriver解决了Selenium的缺点(例如突破JS沙箱,同时得到了一个清晰的API,也就是今天我们使用的WebDriver API,支持多种语言)
Selenium也解决了WebDriver的缺点(例如支持大量的浏览器)
Selenium的贡献者以及Simon本人都觉得融合是最好的方案
至此,解答了第一个问题:
问:Selenium既然是为了做浏览器自动化测试,为何会有Appium这样的测试手机app的工具?
答:这是WebDriver融合后带来的好处。因为WebDriver设计时就是用一套统一的API来驱动不同的平台,因此对于手机app这种有自己原生方法(Appium中使用的是iOS的UIAutomation,Android的UiAutomator或通过Selendroid使用Instrumentation)的应用平台也是适用的。
Selenium测试套件
Selenium2(也被称为Selenium Webdriver),是目前主要使用的版本。
Selenium1(也被称为SeleniumRC, Selenium Remote Control),目前已经被分离出来,且处于维护状态。
Selenium IDE(Integrated Development Environment)是一个编写用例的原型工具,可以用来协助编写用例原型。
至此,解答了第三个问题:
问:Selenium RC又是什么?
答:Selenium RC是Selenium 1.0版本,现已主要被Selenium2取代,仅处于维护状态。
WebDriver和Selenium Server
你并不一定需要Selenium Server,这取决于你如何使用Selenium-WebDriver。如果你只是为了使用WebDriver API,你不需要使用Selenium-Server。需要使用Selenium Server配合Selenium-WebDriver的场景主要有以下几个:
你使用了Selenium-Grid(可以理解为分布式的Selenium)在多台机器或虚拟机上分发测试
你希望连接到一台拥有特定的、你目前机器上没有的浏览器版本的远程机器
你没有使用Java绑定(如Python, C#,Ruby)并希望使用HtmlUnit Driver。
此时,第二个问题有了点头绪,WebDriver不需要依赖Selenium Server,Selenium Server主要应用场景是远程计算机/多台计算机/HtmlUnit Driver。但还不够清晰,因此补充下面内容:
可通过运行Standalone Selenium Server来满足RemoteDriver的使用。在把IEDriverServer或者chromedriver放到系统变量PATH后,Selenium Server会自动处理对IE/Chrome的请求。
至此,解答了第二个问题:
问:Selenium Server、各种浏览器的Driver之间有什么关系?
答:Selenium Server是为了满足远程调用而存在的工具。它可以驱动远程计算机的WebDriver来执行测试。可以理解为是一个翻译器,让测试代码可以在基本不需要修改的前提下在远程计算机上执行,进而满足各种需求,如对IE6, IE7, IE8这种同一浏览器多个版本的测试(一个Windows只能有一个版本的IE,想要测多个版本的IE只有用多个操作系统)。
结论
1.Selenium既然是为了做浏览器自动化测试,为何会有Appium这样的测试手机app的工具?
答: 这是WebDriver融合后带来的好处。因为WebDriver设计时就是用一套统一的API来驱动不同的平台,因此对于手机app这种有自己原生方法(Appium中使用的是iOS的UIAutomation,Android的UiAutomator或通过Selendroid使用Instrumentation)的应用平台也是适用的。
2.Selenium Server、各种浏览器的Driver之间有什么关系?
答:Selenium Server是为了满足远程调用而存在的工具。它可以驱动远程计算机的WebDriver来执行测试。可以理解为是一个翻译器,让测试代码可以在基本不需要修改的前提下在远程计算机上执行,进而满足各种需求,如对IE6, IE7, IE8这种同一浏览器多个版本的测试(一个Windows只能有一个版本的IE,想要测多个版本的IE只有用多个操作系统)。
3.Selenium RC又是什么?
答:Selenium RC是Selenium 1.0版本,现已主要被Selenium2取代,仅处于维护状态。
以上内容为大家介绍了自动化测试中的Selenium体系结构的疑惑及解答,本文由多测师亲自撰写,希望对大家有所帮助。了解更多自动化测试相关知识:https://www.aichudan.com/xwzx/