1. 程式人生 > >Selenium3原始碼之初識篇

Selenium3原始碼之初識篇

前提

本系列是對Selenium3的Python3版本的原始碼進行解讀分析,所以你應該需要以下準備:

安裝Python3,請自行去下載安裝或參照公眾號(開源優測)中Python3系列中的文章學習怎麼安裝Python3

使用以下命令安裝最新的Selenium3

pip install selenium -U

安裝結果如下圖:


selenium安裝成功後你可以在Python的安裝目錄的lib/site-packages/selenium下找到對應的原始碼

認識下目錄

我們通過下面這張圖瞭解下Selenium3的Python3版本原始碼目錄結構:

目錄說明:

selenium/common
定義了webdriver的異常類

selenium/webdrver
定義了webdriver所有Python實現,包含:

  1. 各種瀏覽器支援

  2. 各種UI操作方法

  3. 異常處理

  4. 定為方法

  5. json wire protocol對映
    等等

以下為瀏覽器支援模組:

selenium/webdriver/android android原生瀏覽器
selenium/webdriver/chrome 谷歌瀏覽器
selenium/webdriver/edge 微軟edge瀏覽器
selenium/webdriver/firefox 火狐瀏覽器
selenium/webdriver/ie 微軟ie瀏覽器
selenium/webdriver/opera opera瀏覽器
selenium/webdriver/phantomjs phantomjs headless瀏覽器(執行在記憶體模式)
selenium/webdriver/safari safari瀏覽器
selenium/webdriver/webkitgtk WebKitGTKDriver瀏覽器
selenium/webdriver/blackberry blackberry瀏覽器

以下為核心程式碼模組:

selenium/webdriver/common webdriver共用功能
selenium/webdriver/remote webdriver核心程式碼實現
selenium/webdriver/support webdriver輔助功能程式碼

以下模組為webdriver對外匯出能力:
selenium/webdriver/init.py
程式碼如下如圖所示:

對外匯出了webdriver通用的物件及webdriver版本定義

小結

本文簡單介紹了Selenium3 Python3原始碼的目錄結構,後續就各功能塊的原始碼進行分享。

相關推薦

Selenium3原始碼初識

前提本系列是對Selenium3的Python3版本的原始碼進行解讀分析,所以你應該需要以下準備:安裝Python3,請自行去下載安裝或參照公眾號(開源優測)中Python3系列中的文章學習怎麼安裝Python3使用以下命令安裝最新的Selenium3pip install

Python3.x下Selenium3.x安裝

重新 小代碼 sel bubuko 命令行 我們 2.x 使用 http 環境安裝 Python環境: 首先我們需要安裝Python語言,這個不過多詳述,僅給出建議 Python2.x目前支持的第三方庫類較多 Python3.x是修改了許多2.x版本的不足,但支持的庫類較少

Netty 從零到一學習系列初識

由於專案開發中需要用的網路通訊,就研究了一下Netty的使用方法、原理及原始碼。現在總結學習新的及經驗分享給大家。 一、為什麼不選擇Java原生的NIO        在JDK1.4版本中已經引入了NIO,NIO彌補了原來同步阻塞I/O的不足,它在Java程式碼中提供了高

SpringBoot原始碼事物(一)事物是在哪裡開啟的呢?

最近正在學習使用JPA,JPA是預設開啟事物管理的,在哪裡開啟的呢???突然覺得對spring處理事物的原理一竊不通,才有了這次的原始碼閱讀之行,有不正確的地方歡迎大家指正。 先簡略過一下springboot的執行原理 public void pr

Linux初識

****一、虛擬機器的控制***************************[[email protected] Desktop]$ rht-vmctl start desktop            //開啟虛擬機器[[email protecte

《Python基礎初識Python一

file dff lam lag port nag elong dir car %E4%BD%BF%E7%94%A8CHttpFile%E4%BB%8E%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AB%AF%E6%AD%A3%E7%A1%AE%E7%9A%

Collection原始碼路(3)——HashMap 上

首先糾正一個錯誤,HashMap不屬於Collection,而是屬於Map,之所以本篇文章叫Collection原始碼之路,是為了和之前的文章呼應。 之前的兩篇文章介紹我的我們實際開發中用到最多的ArrayList或者結構簡單的LinkedList,但是找工作面試問得最

Android事件分發機制原始碼分析Activity

在之前的事件分發分析中,曾提及到View的事件是由ViewGroup分發的,然而ViewGroup的事件我們只是稍微帶過是由Activity分發的。而我們知道,事件產生於使用者按下螢幕的一瞬間,事件生成後,經過一系列的過程來到我們的Activity層,那麼事件是怎樣從Activity傳遞

Spring Cloud原始碼分析Eureka第六章:服務註冊

在文章《Spring Cloud原始碼分析之Eureka篇第四章:服務註冊是如何發起的 》的分析中,我們知道了作為Eureka Client的應用啟動時,在com.netflix.discovery.DiscoveryClient類的initScheduledT

Spring Cloud原始碼分析Eureka第八章:服務註冊名稱的來歷

關於服務註冊名稱 服務註冊名稱,是指Eureka client註冊到Eureka server時,用於標記自己身份的標誌,舉例說明,以下是個簡單的Eureka client配置: server: port: 8082 spring: applicatio

騰訊效能監控框架Matrix原始碼分析第一

騰訊效能監控框架Matrix原始碼分析之第一篇 概述 前幾天騰訊將一款Android應用效能監控的框架matrix開源了,原始碼地址在github.com/Tencent/mat…,作者是微信終端團隊。matrix到底是什麼?據官方說法如下: Matrix 是一款微信研發並日常使用的 APM(Applic

Multibit原始碼解析學習---傳送比特幣

/**package org.multibit.viewsystem.swing.action; * Complete the transaction to work out the fee) and then show the send bitcoin confirm dialog.

Spring Cloud原始碼分析Eureka第五章:更新服務列表

在上一章《Spring Cloud原始碼分析之Eureka篇第四章:服務註冊是如何發起的 》,我們知道了作為Eureka Client的應用啟動時,在com.netflix.discovery.DiscoveryClient類的initScheduledTask

React Native 4 for Android原始碼分析 一《JNI智慧指標介紹

導讀 React Native 釋出以來將近一年多了,也被抄的火爆到不行,包括RN的中文網和各種資料也很多,加之SE5,Se6語法升級,學習成本並不在RN環境搭建和入門,關鍵還是對JS的掌握入門,不管你是用Native開發,h5開發,還是React

spring beans原始碼解讀--總結

spring beans下面有如下原始檔包: org.springframework.beans, 包含了操作java bean的介面和類。org.springframework.beans.annotation, 支援包,提供對java 5註解處理bean樣式的支援。org.springframework

Redis網路庫原始碼分析(1)介紹

一、前言 Redis網路庫是一個單執行緒EPOLL模型的網路庫,和Memcached使用的libevent相比,它沒有那麼龐大,程式碼一共2000多行,因此比較容易分析。其實網上已經有非常多有關這個網

ss-libev 原始碼解析local(5):ss-localremote_send_cb

remote_send_cb這個回撥函式的工作是將從客戶端收取來的資料轉發給ss-server。在之前閱讀server_recv_cb程式碼時可以看到,在STAGE_STREAM階段有幾種可能都會開啟remote->fd的寫事件的監聽,從而當有寫事件觸發時

【OAuth2.0】Spring Security OAuth2.0初識

不吐不快   因為專案需求開始接觸OAuth2.0授權協議。斷斷續續接觸了有兩週左右的時間。不得不吐槽的,依然是自己的學習習慣問題,總是著急想了解一切,習慣性地鑽牛角尖去理解小的細節,而不是從巨集觀上去掌握,或者說先用起來(少年,一輩子辣麼長,你這麼著急合適嗎?

關於Yarn原始碼那些事-前傳ResourceManager(一)初始化

在關於Yarn那些事的部落格裡,介紹的主要是針對任務提交的一個動態流程說明,而其中牽涉到的一些細節問題,必須通過Resourcemanager的啟動和NodeManager的啟動,來更好的說明。而本系列,就詳細說說ResourceManager啟動過程中,都發生了什麼。我們都

Kubernetes Node Controller原始碼分析執行

Author: [email protected] 摘要:我認為,Node Controller是Kubernetes幾十個Controller中最為重要的Controller之一,其重要程度在Top3,然而這可能也是最為複雜的一個Contr