2023年11月25日发(作者:)

使⽤ChromeDevTools协议编写⾃⼰的ChromeDriver

ChromeDevTools协议简称CDP,它允许对Chromium,Chrome和其他基于Blink的浏览器进⾏检测,探测,调试和配置。许多现有项⽬⽬

前使⽤该协议。 Chrome的开发者⼯具就是使⽤此协议,该团队也负责维护其API。Chrome浏览器可以远程调试的⽅式启动, 实际上在浏览器内

部启动了⼀个采⽤DevTools的服务器, 任何符合该协议的websoket通讯都可以被Chrome响应,这样你可以向Chrome发送命令, 执⾏操作, 实现

⼀些⾃动化浏览器的操作。⼤名⿍⿍的ChromeDriver就是通过 DevTools Protocol实现与chrome浏览器进⾏交互的。

CDP官⽅⽂档如下:

协议基础

模拟chromedriver实现⽅案

环境搭建

从上⾯的例⼦中通过websocket与chrome直接交互实现是⽐较复杂的,因此各种主流语⾔都提供了类库来简化该过程,详细信息请参考:

在这⾥我们使⽤python的pychrome 来实现与chrome的交互,也可以理解我们⾃⼰开发了⼀个chromedriver!

安装pychrome

pip install -U pychrome

Selenium实现场景

实现场景:在百度输⼊框中搜索selenium。

我们先回顾⼀下Selenium的代码实现过程如下:

1.把放到系统环境变量中

itly_wait(30)

def test_untitled_test_case(self):

driver =

("/""/")

_element_by_id("kw""kw").clear()

_element_by_id("kw""kw").send_keys("selenium""selenium")

_element_by_id("su""su").click()

def tearDown(self):

()

3.执⾏⾃动化脚本

Selenium的原理如下:

从上图可知,最后是通过chromedriver完成了和chrome浏览器的交互!

()

#访问baidu

te(url="""", _timeout=5)

(5)

#在搜索框中输⼊selenium

te(expression='mentById("kw").value="selenium"''mentById("kw").value="selenium"')