selenium中webdriver.Chrome()的返回對象的session值詳解

1.代碼功能打開谷歌瀏覽器,並輸出返回的對象:

from selenium import webdriver

import time



# 創建Chrome驅動程序的新實例

driver = webdriver.Chrome()

print(type(driver))

print(driver)



# 轉到百度主頁

driver.get("https://www.baidu.com")

time.sleep(2)

driver.quit()

運行結果:

程序的功能非常簡單,1:打開一個谷歌瀏覽器 2:跳轉到百度頁面 3:等待兩秒退出。 可是具體每一步程序都幹了什麼? 尤其是每個函數的返回值是什麼,driver中的session值怎麼來的並不清楚。

下面我們就詳細的講一下是怎麼實現的。

driver = webdriver.Chrome() ,這個函數調用中的webdriver就是from selenium import webdriver中導入的模塊。如下:

進入webdriver模塊,如下圖,可以看到,在這裏的.chrome.webdriver中導入了WebDriver然後取別名Chrome,看到這裏我們就大概明白了,webdriver.Chrome()並不是一個函數,實際上是調用谷歌瀏覽器對應的.chrome.webdriver中WebDriver這個類的實例化,具體表現爲Chrome()。

看到這一步,我們已經清楚了這個函數是怎麼調用的。但是依舊不清楚函數的返回參數session值是怎麼來的。

 

我們再進入.chrome.webdriver我們可以看到WebDriver這個類具體的實現方法,這個類繼承了RemoteWebDriver

我們先進入父類RemoteWebDriver可以看到self.session_id = None。

接着點開self.start_session(capabilities, browser_profile)函數,可以看到是由這個函數中得到的。

到這裏我們終於就看到了session值得由來。

 

但是我還有幾點不明白,爲什麼print(driver)的時候只打印了driver的session_id,其他的元素沒有打印?這些元素如何區分,哪些是有用的可以直接取到的?哪些是經常用到的?

    我們可以單步進入print(driver),發現其實是調用了基類class WebDriver(object):中的函數 __repr__() 方法,這個方法的功能就是對你想要打印的內容進行設置 類似__str__()。我們可以看到這個基類中的__repr__()方法設置的返回值就是self.session_id,所以在衆多的成員變量中,只打印了session_id。如果有需要,其他的成員變量可以通過print(drive.xxx)的形式打印出來。


 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章