selenium源码通读·1 | 源码目录
·1 | 源码目录
1 源码获取
- 官网下载:https://pypi.org/project/selenium/
 - 或使用pip安装:
pip install selenium - 这里使用pip安装后,目录存在的python的安装目录下,如本文为:
 
D:\Python37\Lib\site-packages\selenium
 
2 使用pycharm查看源码
-  
新建一个项目
selenium_study -  
设置项目的
Python Interpreter

 -  
设置完后在外部库中就可以看到对应的python相关库了
 -  
注:这里为什么这么复杂的,不就是看个源码吗?怎么还创建了个项目,这个主要是为了后续的源码练习使用的。

 -  
如上图,在外部库中
\Python37\Lib\site-packages\selenium中可看到selenium的源码 
3 源码目录
# 在selenium的同级目录使用如下命令,查看完整的selenium源码目录:
tree selenium /f > selenium.txt
 
D:\PYTHON37\LIB\SITE-PACKAGES\SELENIUM
│  __init__.py
│  
├─common
│  │  exceptions.py
│  │  __init__.py
│          
├─webdriver
│  │  __init__.py
│  │  
│  ├─android
│  │  │  webdriver.py
│  │  │  __init__.py
│  │          
│  ├─blackberry
│  │  │  webdriver.py
│  │  │  __init__.py
│  │          
│  ├─chrome
│  │  │  options.py
│  │  │  remote_connection.py
│  │  │  service.py
│  │  │  webdriver.py
│  │  │  __init__.py
│  │          
│  ├─common
│  │  │  action_chains.py
│  │  │  alert.py
│  │  │  by.py
│  │  │  desired_capabilities.py
│  │  │  keys.py
│  │  │  proxy.py
│  │  │  service.py
│  │  │  touch_actions.py
│  │  │  utils.py
│  │  │  __init__.py
│  │  │  
│  │  ├─actions
│  │  │  │  action_builder.py
│  │  │  │  input_device.py
│  │  │  │  interaction.py
│  │  │  │  key_actions.py
│  │  │  │  key_input.py
│  │  │  │  mouse_button.py
│  │  │  │  pointer_actions.py
│  │  │  │  pointer_input.py
│  │  │  │  __init__.py
│  │  │          
│  │  ├─html5
│  │  │  │  application_cache.py
│  │  │  │  __init__.py
│  │          
│  ├─edge
│  │  │  options.py
│  │  │  service.py
│  │  │  webdriver.py
│  │  │  __init__.py
│  │          
│  ├─firefox
│  │  │  extension_connection.py
│  │  │  firefox_binary.py
│  │  │  firefox_profile.py
│  │  │  options.py
│  │  │  remote_connection.py
│  │  │  service.py
│  │  │  webdriver.py
│  │  │  webdriver.xpi
│  │  │  webdriver_prefs.json
│  │  │  webelement.py
│  │  │  __init__.py
│  │  │  
│  │  ├─amd64
│  │  │      x_ignore_nofocus.so
│  │  │      
│  │  ├─x86
│  │  │      x_ignore_nofocus.so
│  │          
│  ├─ie
│  │  │  options.py
│  │  │  service.py
│  │  │  webdriver.py
│  │  │  __init__.py
│  │          
│  ├─opera
│  │  │  options.py
│  │  │  webdriver.py
│  │  │  __init__.py
│  │          
│  ├─phantomjs
│  │  │  service.py
│  │  │  webdriver.py
│  │  │  __init__.py
│  │          
│  ├─remote
│  │  │  command.py
│  │  │  errorhandler.py
│  │  │  file_detector.py
│  │  │  getAttribute.js
│  │  │  isDisplayed.js
│  │  │  mobile.py
│  │  │  remote_connection.py
│  │  │  switch_to.py
│  │  │  utils.py
│  │  │  webdriver.py
│  │  │  webelement.py
│  │  │  __init__.py
│  │          
│  ├─safari
│  │  │  permissions.py
│  │  │  remote_connection.py
│  │  │  service.py
│  │  │  webdriver.py
│  │  │  __init__.py
│  │          
│  ├─support
│  │  │  abstract_event_listener.py
│  │  │  color.py
│  │  │  events.py
│  │  │  event_firing_webdriver.py
│  │  │  expected_conditions.py
│  │  │  select.py
│  │  │  ui.py
│  │  │  wait.py
│  │  │  __init__.py
│  │          
│  ├─webkitgtk
│  │  │  options.py
│  │  │  service.py
│  │  │  webdriver.py
│  │  │  __init__.py       
 
4 目录说明
- 一级目录主要涉及
common和webdriver:

 - 其中:
 
# common:通用的异常类
# webdriver:核心实现类
 
- 这里的
__init__.py里边主要是版本号,本文是3.141.0

 - 具体目录为:

 - 详细说明:
 
| 目录 | 说明 | 
|---|---|
common/exceptions.py | 定义了所有可能在webdriver代码中出现的异常 | 
webdriver/android、webdriver/blackberry、webdriver/chrome、webdriver/edge、webdriver/ie、webdriver/firefox、webdriver/opera、webdriver/phantomjs、webdriver/safari、webdriver/webkitgtk  | 定义各个浏览器兼容的代码,用于支持不同的浏览器 | 
webdriver/common | 定义了webdriver所指定的通用能力 | 
webdriver/remote | 定义了webdriver核心能力 | 
webdriver/support | 定义了webdriver的辅助能力 | 
『全栈测试技术,分享,共勉,共进,提升』
 

                
            
        
浙公网安备 33010602011771号