selenium源码解读(二)remote,version 3.14.1
因为所有浏览器都是基于remote中的webdriver,所以先分析remote
其中command包含为webdrive命令定义常量,虽然这些常量本身没有意义,但它们用于通过实现 WebDriver 远程线路协议
remote_connection:主要是和远程webdriver服务器建立连接,然后通过接口形式发送请求来进行相应的命令操作,这里远程服务器其实就是指本机地址,客户端就是我们的代码,中间是通过webdriver wire protocol来进行通信
webdriver:通过发送命令到远程服务器来控制浏览器操作;其实就是创建了一个remote_connection对象来形成自己的excecute方法,进而实现一系列操作,包括get获取url,和一些定位元素的操作
webelement:其实也是通过创建一个remote_connection对象来实现自己的_excecute方法,其中包含只是对页面元素的各种操作,而remote.webdriver中包含的是和协议中一一对应的各种操作
utils.py:包含一些辅助功能的函数,比如转换为json格式,转换为字典格式,解压
switch_to.py:主要包含页面的切换操作,切换到窗口,切换到默认的frame,切换到任意frame,切换到警告页
mobile.py:设置远程设备连接
file_detector.py:用于识别字符序列是否代表文件路径
errorhandler.py:定义远程服务端(浏览器驱动)应答出现的异常