Selenium是ThroughtWorks公司一个强大的开源Web功能测试工具系列,基于JavaScript库
selenium的特点
1、轻量级的,免费的自动化测试工具
2、支持多平台:Windows,Linux,MAC
3、支持多语言:python,Java,Ruby,JavaScript,C#
4、支持多浏览器:Firefox,Chrome,edge,IE,360,Safari
5、支持分布式测试用例的执行,可以把测试用例分布到不同的测试机器执行,相当于分发机的功能。selenium GRID
selenium工具集
selenium1:Jason、Higgis、JavaScript库、selenium RC(有环境沙箱问题,被webdriver API代替),selenium IDE(录制自动化脚本),selenium GRID(分布式)
缺点:浏览器的安全性会使一些操作被禁止(selenium IDE核心是JavaScript库)。
selenium2:selenium1+Webdriver(Goole)
WebDriver 解决了 Selenium 存在的缺点(比如,绕过 JS 沙箱)
Selenium 解决了 WebDriver 存在的问题(例如支持广泛的浏览器)
Selenium 的主要贡献者们都觉得合并项目是为用户提供最优秀框架的最佳途径
selenium3:增加了一些浏览器的原生驱动(Safari,edge(MS))。
Webdriver原理
其中乘客相当于脚本,司机相当于驱动,出租车相当于浏览器
乘客提出指令,司机按照指令,驱动出租车完成指令到达目的地
相当于,webdriver根据脚本,驱动浏览器执行脚本命令
启动浏览器后,selenium-webdriver会将目标浏览器绑定到特定的端口,启动后的浏览器则作为webdriver的remote server
客户端(也就是测试脚本),借助ComandExecutor发送HTTP请求给sever端(通信协议:The WebDriver Wire Protocol,在HTTP request的body中,会以WebDriver Wire协议规定的JSON格式的字符串来告诉Selenium我们希望浏览器接下来做什么事情)
Sever端需要依赖原生的浏览器组件,转化Web Service的命令为浏览器native的调用来完成操作