Selenium WebDriver 工作原理

本文介绍了Selenium WebDriver的工作原理,包括它如何通过HTTP协议与浏览器交互,以及其工作流程。WebDriver使用Client-Server模式,通过WebDriver Protocol控制浏览器。在工作流程中,WebDriver启动浏览器,接收并执行客户端发送的HTTP请求,转换为浏览器的原生调用,最后返回HTTP响应。文章还提及了WebDriver的HTTP返回状态码,参考JSON Wire Protocol Specification。
摘要由CSDN通过智能技术生成

目录

WebDriver 介绍

WebDriver 工作流程

​​WebDriver​​ HTTP返回状态码 


WebDriver 介绍

      WebDriver提供了另外一种方式与浏览器进行交互。利用浏览器原生API,封装成一套更加面向对象的Selenium WebDriver API,直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的)

      WebDriver是W3C的一个标准,由Selenium主持,WebDriver之所以能够实现与浏览器进行交互,是因为浏览器实现了这些协议,这个协议使用JOSN通过HTTP进行传输

      WebDriver使用了经典的Client-Server模式,即客户端发送一个requset,服务器端返回一个response

      Firefox浏览器直接实现了WebDriver的通讯协议,Chrome和IE则是通过ChromeDriver和InternetExplorerDriver实现的

WebDriver 工作流程

1. 实例化WebDriver,Selenium首先会确认浏览器的native component是否存在可用而且版本匹配。若匹配WebDriver 将会启动一个浏览器驱动,并绑定到指定端口,该启动的浏览器实例,做为 WebDriver 的 remote server,  该服务器用于接收控制浏览器的命令

(控制浏览器的命令必须遵循 ​ ​WebDriver Protocol 协议格式,该格式定义了一个所有​​WebDriver​​都必须实现的​​RESTish JSON API​​接口,这套协议非常之强大,几乎可以操作浏览器做任何事情,包括打开、关闭、最大化、最小化、元素定位、元素点击、文件上传等等)

2. Client 端通过 CommandExcuter 发送 HTTPRequest 给 remote server 的侦听端口(通信协议: the webriver wire protocol)

发送请求时,WebDriver的HttpCommandExecutor类将命令作为key,将命令转换为URL作为value,一起存入map作为request,同时会在request的相应的By Xpath、id、name存放在body中

实际发送的URL都是相对路径,后缀多以/session/:sessionId开头,意味着WebDriver每次启动浏览器都会分配一个独立的sessionId

比如find_element_by_id接口,会转化为/session/:sessionId/element这个url,然后在Body内附上具体的参数,比如id的值,json内容为{"using":"id","value":"test"}

3. Remote server 需要依赖原生的浏览器组件(如:IEDriverServer.exe、chromedriver.exe),转化为浏览器的 native 调用

4. 浏览器收到并执行了操作之后,回复一个Http Response,内容为Json格式,会返回找到的element的各种细节,比如text、tag name、class name等等

​​WebDriver​​ HTTP返回状态码 

详细参考:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值