1、WebDriver工作原理
例子:
我们先从一个打车的例子,来理解下webdriver的工作原理,当我们打车时,会有3个角色:
- 乘 客 : 告 诉 出 租 车 司 机 去 哪 里 , 大 概 怎 么 走
- 出 租 车 司 机 : 按 照 乘 客 的 要 求 来 操 控 出 租 车
- 出 租 车 : 出 租 车 按 照 司 机 的 操 控 完 成 真 正 的 行 驶 , 把 乘 客 送 到 目 的 地
对应角色:
- 工程师写的自动化测试代码:自动化测试代码发送请求给浏览器的驱动(比如火狐驱动、谷歌驱动)
- 浏览器的驱动:它来解析这些自动化测试的代码,解析后把它们发送给浏览器
- 浏览器:执行浏览器驱动发来的指令,并最终完成工程师想要的操作。
技术上解释工作原理:
-
WebDriver API(基于Java、Python、C#等语言),对于java语言来说,就是下载下来的Selenium的Jar包,比如Selenium-java-3.8.1.zip包,代表Selenium3.8.1的版本
-
浏览器的驱动(browser driver),每个浏览器都有自己的驱动,均以exe文件形式存在比如谷歌的chromedriver.exe、火狐的geckodriver.exe、IE的IEDriverServer.exe
-
浏览器,浏览器当然就是我们很熟悉的常用的各种浏览器(IE、Firefox、Chrome)。
WebDriver和浏览器如何通信:
- 对于每一条Selenium脚本,一个http请求会被创建并发送给浏览器的驱动
- 浏览器驱动轴包含了一个HTTP Server,用来接收这些http请求
- HTTP Server接收到请求后根据请求来具体操控对应的浏览器
- 浏览器执行具体的测试步骤
- 浏览器将步骤执行结果返回给HTTP Server
- HTTP Server又将结果返回给Selenium的脚本,如果是错误的http代码我们就会在控制台看到对应的报错信息
2、WebDriver的协议
- WebDriver使用的协议是:JSON Wire protocol(是一个公共的通信协议)
- 通信的数据格式是JSON