python+selenium實戰(zhàn)之模擬登錄模塊

  • 本次使用BeautifulSoup查找驗證碼tag信息,redis查找驗證碼,然后使用selenium登錄

  • 使用selenium有時候很討厭登錄邏輯,但是登錄邏輯又繞不開,本次只是一個舉例,理論上講模擬登錄只要了解登錄實現邏輯基本上就解決一大半了。

  • 簡單說一下實現邏輯:登錄邏輯前后端分離,前端生成隨機參數發(fā)起請求后端生成驗證碼存在redis并生成圖片讓前端下載。那么我們這次只需要找到tag并通過它查詢redis即可獲取驗證碼,查找網頁tag在圖片地址中,這樣真是就太簡單了。

上代碼:

from seleniumimport webdriver

from timeimport sleep

from bs4import BeautifulSoup

from selenium.webdriver.common.action_chainsimport ActionChains

import redis



chromedriver =r"C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe"

driver = webdriver.Chrome (chromedriver)

driver.get("http://192.168.0.86:xxxx")

#定位輸入賬號密碼

driver.find_elements_by_class_name("el-input__inner")[0].send_keys("seeta")

driver.find_elements_by_class_name("el-input__inner")[1].send_keys("seeta110")

sleep(2)固定等待

#點擊兩次隱藏按鈕

driver.find_element_by_xpath('//*[@id="app"]/div/div/div/form/div[2]/div/div[1]/span[2]/span/i').click()

driver.find_element_by_xpath('//*[@id="app"]/div/div/div/form/div[2]/div/div[1]/span[2]/span/i').click()

sleep(3)

#搜索驗證碼的tag

html = driver.page_source

soup = BeautifulSoup(html,"html.parser")

find_img_1 =str(soup.find_all(class_="el-tooltip"))

#分割到需要的tag

x = find_img_1.split('tag=',1 )[1]

x = x.split('"',1)[0]

#連接redis

conn = redis.Redis(host='192.168.0.148',port=6388,password='makenosense',db=0)#創(chuàng)建連接redis

#查找tag對應的驗證碼tag

code = conn.get("ai_building:"+x) 

code = code.decode()

driver.find_elements_by_class_name("el-input__inner")[2].send_keys(code)

#雙擊登錄按鈕

actions=ActionChains(driver)

actions.double_click(driver.find_element_by_id("login-bt"))

#退出

driver.quit()
  • 本來我希望通過實現登錄邏輯進行登錄,登錄邏輯涉及 AES +RSA(這部分我后面貼上來),后來在反復確定之后發(fā)現有更簡便的方法。
測試的樂趣也在于此,不要拘泥于條條框框,使用最簡便的辦法得到你想要的東西。所以測試并沒有高低,技術才分高下。如果手工測試最簡便我寧愿用手工測試。我認為好的測試就是在綜合最少的測試資源完成最優(yōu)的測試目標。最少與最優(yōu)才是衡量一個測試員能力的標準。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容