掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流
為了避免重復且浪費時間的工作,我寫了一個python腳本,實現(xiàn)批量自動登錄idaas并訪問后端網(wǎng)站。

創(chuàng)新互聯(lián)公司從2013年創(chuàng)立,先為天寧等服務建站,天寧等地企業(yè),進行企業(yè)商務咨詢服務。為天寧企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。
下載之前查看自己電腦chrome游覽器的版本 ,在設置中點擊關于Chrome即可查看,我這邊的版本是101.0.4951.41 。
查看谷歌瀏覽器版本
打開下載鏈接:http://chromedriver.storage.googleapis.com/index.html ,選擇和chrome游覽器相同或相近的版本,否則無法調用chrome游覽器。我這邊選擇的是與我瀏覽器最相近的101.0.4951.15版
查找相近版本
選擇與自己系統(tǒng)相符的安裝包進行下載,我是windows系統(tǒng)下載chromedriver_win32.zip 。
選擇與系統(tǒng)相對應的包
下載下來的安裝包直接解壓即可,記住安裝路徑,我的路徑C:\Users\15418\Desktop\chromedriver.exe。
安裝路徑
#coding=utf-8
#使用selenium庫中的webdriver工具
from selenium import webdriver
#打開瀏覽器,這里填寫chromedriver的路徑,才能打開瀏覽器
driver = webdriver.Chrome(executable_path=r"C:\Users\15418\Desktop\chromedriver.exe")
#關閉瀏覽器
driver.quit()
#使用get的方式訪問sso頁面
driver.get("https://sso.xxx.com/")
idaas登錄界面
訪問sso頁面后按F12,在Elements中找到賬戶名的輸入框。鼠標移動到輸入框那一行代碼,上面的輸入框就會出現(xiàn)藍色陰影提示。在用戶名輸入框代碼中,input類型即為輸入框,它的class名稱為"ivu-input ivu-input-default",這些信息會在輸入用戶名中用到。
用戶名
找到密碼輸入框的前端代碼,同樣input類型即為輸入框,他的類型type為password。做的這些操作都是為了讓代碼找到密碼輸入框在哪里,具有input類型,且type為password的就只有密碼輸入框,為后續(xù)自動輸入密碼做準備。
登錄
同理,找到提交按鈕的特性:button按鈕類型、class名稱為“ivu-btn ivu-btn-primary ivu-btn-long”。
密碼
#coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.by import By
#打開瀏覽器
driver = webdriver.Chrome(executable_path=r"C:\Users\15418\Desktop\chromedriver.exe")
#訪問sso頁面
driver.get("https://sso.xxx.com/")
#隱式等待,等頁面元素穩(wěn)定后就定位
driver.implicitly_wait(30)
#找到用戶名輸入框并輸入用戶名
driver.find_element(By.CSS_SELECTOR, 'input[class="ivu-input ivu-input-default').send_keys("此處填用戶名")
#找到密碼輸入框并輸入密碼
driver.find_element(By.CSS_SELECTOR, 'input[type="password"').send_keys("此處填密碼")
#找到登錄按鈕并登錄
driver.find_element(By.CSS_SELECTOR, 'button[class="ivu-btn ivu-btn-primary ivu-btn-long"').click()
#關閉瀏覽器
driver.quit()
登錄idaas后需要第一次訪問下應用服務,應用服務才能收到是哪些用戶進而對這些用戶授權,所以需要在登錄的狀態(tài)下進行訪問。
#找到應用服務并點擊進行訪問
driver.find_element(By.CSS_SELECTOR,'a[href="/api/xxx"').click()
訪問應用服務
上面講述的是單個用戶的登錄情況,現(xiàn)在我們需要批量登錄,先創(chuàng)建一個文件里面寫著用戶名用換行分割(如下圖所示),由于我們的初始密碼都是統(tǒng)一的,所以我直接在代碼中寫死了,一個用戶登錄訪問完成后緊接著下一個用戶登錄,直至最后一個用戶完成登錄訪問。
完整代碼:
#coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.by import By
with open(r'name.txt','r',encoding='utf8')as read_f:
for line in read_f:
username=line.strip("\n")
password="xxx"
driver = webdriver.Chrome(executable_path=r"C:\Users\15418\Desktop\chromedriver.exe")
driver.get("https://sso.xxx.com/")
driver.implicitly_wait(30)
driver.find_element(By.CSS_SELECTOR, 'input[class="ivu-input ivu-input-default').send_keys(username)
driver.find_element(By.CSS_SELECTOR, 'input[type="password"').send_keys(password)
driver.find_element(By.CSS_SELECTOR, 'button[class="ivu-btn ivu-btn-primary ivu-btn-long"').click()
driver.find_element(By.CSS_SELECTOR,'a[href="/api/xxx"').click()
driver.quit()
至此,使用selenium批量自動登錄并訪問應用服務完成。

我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流