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"')
发布评论