您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關(guān)怎么在Python3中利用Selenium獲取session和token,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
下載驅(qū)動(dòng)文件,放到后續(xù)python文件同級(jí)目錄下或加入到環(huán)境變量中即可。其中Chrome驅(qū)動(dòng)要注意Driver版本與瀏覽器版本對(duì)應(yīng)要求。
Firefox驅(qū)動(dòng)下載地址:https://github.com/mozilla/geckodriver/releases
Chrome驅(qū)動(dòng)下載地址:http://chromedriver.chromium.org/downloads
Safari驅(qū)動(dòng)下載地址:https://webkit.org/blog/6900/webdriver-support-in-safari-10/
Edge驅(qū)動(dòng)下載地址:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
pip install selenium
手動(dòng)登錄系統(tǒng)后,查看存儲(chǔ)狀況如下圖所示,sessionid和token分別存儲(chǔ)在sessionStorage的sessionId和token兩個(gè)變量中
import json import time from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By class GetSessionAndToken(): def __init__(self): # 啟用無頭模式,可選 browser_options = webdriver.FirefoxOptions() browser_options.add_argument('--headless') browser_options.add_argument('--disable-gpu') self.browser = webdriver.Firefox(firefox_options=browser_options) # self.browser = webdriver.Chrome() # 登錄系統(tǒng),具體到自己系統(tǒng)時(shí)需要自行修改 def login_system(self): # 登錄用戶名密碼,改成目標(biāo)系統(tǒng)用戶名密碼 username = "admin" password = "123456" # 登錄頁面url,改成目標(biāo)系統(tǒng)登錄頁面 url = "https://10.10.6.93/#login" self.browser.get(url) # 顯性等待,直到用戶名控件加載出來才進(jìn)行下一步 WebDriverWait(self.browser,20,0.5).until(EC.presence_of_element_located((By.ID,"txtUserName"))) # 填寫用戶名 self.browser.find_element_by_id("txtUserName").send_keys(username) # 填寫密碼 self.browser.find_element_by_id("txtPassword").send_keys(password) # 點(diǎn)擊登錄 self.browser.find_element_by_id("btnLogin").click() # 強(qiáng)制等待5秒,待session和token都成功返回并存到瀏覽器中 # restful隱性等待不太好用?self.browser.implicitly_wait(5) time.sleep(5) # 獲取sessionid def get_sessionid(self): # 是要從localStorage中獲取還是要從sessionStorage中獲取,具體看目標(biāo)系統(tǒng)存到哪個(gè)中 # window.sessionStorage和直接寫sessionStorage是等效的 # 一定要使用return,不然獲取到的一直是None # get的Item不一定就叫sessionId,得具體看目標(biāo)系統(tǒng)把sessionid存到哪個(gè)變量中 sessionid = self.browser.execute_script('return sessionStorage.getItem("sessionId");') # 另外sessionid一般都直接通過返回Set-Cookies頭設(shè)置到Cookie中,所以也可以從Cookie讀取 # 獲取瀏覽器所有Set-Cookie,返回對(duì)象是字典列表 # cookies = self.browser.get_cookies() # 獲取單項(xiàng)Cookie,是不是叫sessionId取決于系統(tǒng)存成什么變量,單項(xiàng)Cookie是字典 # cookie = self.browser.get_cookie("sessionId") # cookie = cookie["value"] # print(f"{cookies}") return sessionid # 獲取token def get_token(self): # 是要從localStorage中獲取還是要從sessionStorage中獲取,具體看目標(biāo)系統(tǒng)存到哪個(gè)中 # window.sessionStorage和直接寫sessionStorage是等效的 # 一定要使用return,不然獲取到的一直是None # get的Item不一定就叫token,得具體看目標(biāo)系統(tǒng)把token存到哪個(gè)變量中 token = self.browser.execute_script('return sessionStorage.getItem("token");') # print(f"{token}") return token def __del__(self): # 退出程序時(shí)關(guān)閉瀏覽器 self.browser.close() if __name__ == "__main__": obj = GetSessionAndToken() obj.login_system() sessionid = obj.get_sessionid() token = obj.get_token() print(f"sessionid為: {sessionid}\n" f"token為: {token}")
以上就是怎么在Python3中利用Selenium獲取session和token,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。