感受这篇博客写的很详细:java
献上地址:https://blog.csdn.net/yoyocat915/article/details/80246744python
在WebDriver中也有相似的三个角色:chrome
下面再从技术上解释下WebDriver的工做原理:后端
从技术上讲,也一样是上面的三个角色:浏览器
1. WebDriver API(基于Java、Python、C#等语言)服务器
对于java语言来讲,就是下载下来的selenium的Jar包,好比selenium-java-3.8.1.zip包,表明Selenium3.8.1的版本测试
2. 浏览器的驱动(browser driver)spa
每一个浏览器都有本身的驱动,均以exe文件形式存在.net
好比谷歌的chromedriver.exe、火狐的geckodriver.exe、IE的IEDriverServer.exeblog
3. 浏览器
浏览器固然就是咱们很熟悉的经常使用的各类浏览器。
那在WebDriver脚本运行的时候,它们之间是如何通讯的呢?为何同一个browser driver便可以处理java语言的脚本,也能够处理python语言的脚本呢?让咱们来看一下,一条Selenium脚本执行时后端都发生了哪些事情:
1)对于每一条Selenium脚本,一个http请求会被建立而且发送给浏览器的驱动
2)浏览器驱动中包含了一个HTTP Server,用来接收这些http请求
3)HTTP Server接收到请求后根据请求来具体操控对应的浏览器
浏览器执行具体的测试步骤
1)浏览器将步骤执行结果返回给HTTP Server
2)HTTP Server又将结果返回给Selenium的脚本,若是是错误的http代码咱们就会在控制台看到对应的报错信息。
为何使用HTTP协议呢?
WebDriver的结构中就是典型的C/S结构,WebDriver API至关因而客户端,而小小的浏览器驱动才是服务器端
那为何同一个浏览器驱动便可以处理Java语言的脚本,也能够处理Python语言的脚本呢?
这就要提到WebDriver基于的协议:JSON Wire protocol。
body部分主要传送具体的数据,在WebDriver中这些数据都是以JSON的形式存在并进行传送的,这就是JSON Wire protocol。
JSON是一种数据交换的格式,是对XML的升级与替代