最近比较空闲就仔细看了一下Selenium的源码,因为主要是使用WebDriver所以重点关注了一下WebDriver的工作原理。在前一篇blog里已经解释过了WebDriver与之前Selenium的JS注入实现不同,直接利用了浏览器native support来操作浏览器。所以对于不同平台,不同的浏览器,必须依赖一个特定的浏览器的native component来实现把WebDriver API的调用转化为浏览器的native invoke。
在我们new一个WebDriver的过程中,Selenium首先会确认浏览器的native component是否存在可用而且版本匹配。接着就在目标浏览器里启动一整套Web Service,这套Web Service使用了Selenium自己设计定义的协议,名字叫做The WebDriver Wire Protocol。这套协议非常之强大,几乎可以操作浏览器做任何事情,包括打开、关闭、最大化、最小化、元素定位、元素点击、上传文件等等等等。

本文深入探讨了Selenium WebDriver的工作原理,解释了如何利用浏览器的native component启动Web Service并通过WebDriver Wire Protocol进行通信。该协议允许对浏览器进行各种操作,如页面控制、元素交互等。文中还提到了HttpCommandExecutor类在协议执行中的作用,并强调了每个浏览器会话的独立sessionId,确保了多线程操作的互不影响。
最低0.47元/天 解锁文章
143





