先发结论:selenium本质上是对WebDriver进行了封装
1. 当我们使用selenium对浏览器进行操作时,实际上是向浏览器驱动发送了HTTP请求
2. 浏览器驱动将请求转化成浏览器可以理解的形式发送给浏览器
3. 浏览器执行请求后将结果返回给浏览器驱动
4. 浏览器驱动将结果返回给脚本代码
举个例子:
在进行UI自动化时,通常需要打开一个浏览器。
以Chrome为例,代码如下:
dirver = webdriver.Chrome()
这一行代码的意思是打开一个Chrome浏览器,并返回一个WebDriver对象,通过这个WebDriver对象可以对打开的浏览器以及其页面元素进行控制。
在执行这行代码的时候,selenium会在本地寻找并启动chromedriver.exe,并建立连接。
然后向chromedriver发送一个打开浏览器的HTTP请求。
后续操作不再赘述。
而站在WebDriver的角度上,则是发送了一个HTTP请求,并且会返回一个sessionid,后续对此浏览器发送请求则需要在url的路径中带上这个sessionid。
具体的请求内容可以去看W3C发布的WebDriver的文档:WebDriver