首页 > 技术文章 > selenium源码分析小结

mik-hello 2021-08-28 11:44 原文

一.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协议的命令即可驱动浏览器

 

#本文属个人分析,如有错误请指出,谢谢

 

推荐阅读