selenium源码分析小结
一.selenium 目录说明
selenium common --公用方法 webdriver --浏览器方法 __init__.py --将常用方法导入包
下面将详细介绍主要功能的实现
1.这里已初始化代码用例进行讲解
selenium 框架是一个B/S架构需要启动服务端,webdriver.common.service即是启动启动浏览器server代码。本地启用的server都是继承webdriver.common.service.下面例子是启动本地driver server。可以看到实例driver 其实就是一个本地服务http://localhost:10000和http://localhost:10001 即时2个启动的server接口。只需要给这个url发送命令即可驱动浏览器。配置不同端口即可同时打开相同浏览器。
from selenium import webdriver 这段代码实际导入是selenium.webdriver.cchrome.webdriver.WebDriver(RemoteWebDriver) 类,这是启动本地webdriver server
driver1 = webdriver.Chrome(port=10000) driver2 = webdriver.Chrome(port=10001)
s_url1 = driver1.service.service_url s_url2 = driver2.service.service_url print(s_url1) print(s_url2)
输出结果
http://localhost:10000
http://localhost:10001
webdriver 通过调用chrome.service类启动浏览器驱动server。远程启动不需要调用的,远程server手动开启的。
二.web启动讲解(谷歌为例)
初始化方法里面的启动服务源码
self.service = Service( executable_path, port=port, service_args=service_args, log_path=service_log_path) self.service.start()
建立连接源码
self.command_executor = command_executor if type(self.command_executor) is bytes or isinstance(self.command_executor, str): self.command_executor = RemoteConnection(command_executor, keep_alive=keep_alive)
#command_executor 为连接地址,
1.实例化driver时,实际就是启动web驱动服务,并建立连接
2.通过def execute(self, driver_command, params=None): 方法发送符合W3C协议的命令即可驱动浏览器
#本文属个人分析,如有错误请指出,谢谢