兩種方式:
驗(yàn)證碼識(shí)別技術(shù) (很難達(dá)到100%)
添加Cookie (*****五星推薦)
方式一:驗(yàn)證碼識(shí)別技術(shù)
邏輯方式:
1:打開驗(yàn)證碼所在頁面,截圖。獲取驗(yàn)證碼元素坐標(biāo),剪切出驗(yàn)證碼圖片,識(shí)別
以途牛為例 代碼:
from PIL import Image # 用戶打開圖片和對(duì)圖片處理
from selenium import webdriver
from selenium.webdriver.common.by import By
import ddddocr
driver = webdriver.Chrome()
# 打開登錄頁面
driver.get("https://passport.tuniu.com/login?origin=https://www.tuniu.com/ssoConnect")
driver.implicitly_wait(30) # 隱式等待30s
driver.save_screenshot("./image/頁面截圖.png") # 全屏截圖
page_snap_obj = Image.open("./image/頁面截圖.png") # 打開圖片
# 獲取驗(yàn)證碼元素
img = driver.find_element(By.XPATH, '//*[@id="line_3"]/td/div/div[3]/a[1]/img')
location = img.location # location屬性可以返回該圖片對(duì)象(既這張圖片)在瀏覽器中的位置,以字典的形式返回
size = img.size # 獲取圖驗(yàn)證碼的寬x高
left = location['x'] # 此處的x和y是圖片驗(yàn)證碼左上角的點(diǎn)再瀏覽器中的x軸y軸對(duì)應(yīng)的值
top = location['y']
right = left + size['width']
bottom = top + size['height']
# 按照提供的圖片驗(yàn)證碼的左上右下的坐標(biāo)值對(duì)圖片驗(yàn)證碼進(jìn)行裁剪
image_obj = page_snap_obj.crop((left, top, right, bottom))
# 把圖片強(qiáng)制轉(zhuǎn)成RGB
img = image_obj.convert("RGB")
img = img.convert("L")
# 保存處理過后的驗(yàn)證碼圖片
img.save("./image/code_image.png")
# 進(jìn)行驗(yàn)證碼識(shí)別
ocr = ddddocr.DdddOcr()
with open('./image/code_image.png', 'rb') as f:
img_bytes = f.read()
# 識(shí)別后的驗(yàn)證碼
res = ocr.classification(img_bytes)
print("驗(yàn)證碼:" + res)
# 獲取驗(yàn)證碼輸入框,輸入驗(yàn)證碼
# driver.find_element(By.XPATH, '//*[@id="identify"]').send_keys(res)
# time.sleep(5)
driver.quit()
文章來源:http://www.zghlxwxcb.cn/news/detail-758663.html
方式二:添加Cookie 以百度為例:
步驟:
1:獲取指定cookie: get_cookie(cookie名)
2:獲取本網(wǎng)站所有本地cookies: get_cookies()
3:添加cookie:add_cookie({字典對(duì)象})
百度cookie獲?。?br> 先F12打開網(wǎng)絡(luò)工作臺(tái),再登錄抓包
這一步就拿到百度cookie了,代碼:文章來源地址http://www.zghlxwxcb.cn/news/detail-758663.html
from time import sleep
from selenium import webdriver
driver = webdriver.Chrome()
driver.implicitly_wait(30)
driver.get("https://www.baidu.com")
sleep(3)
driver.add_cookie({"name": "BDUSS", "value": "你的BUDSS的值"}) # 登錄百度時(shí),抓包獲取
print(driver.get_cookie("BDUSS"))
driver.refresh()
sleep(5)
driver.quit()
到了這里,關(guān)于Selenium+Python自動(dòng)化測(cè)試之驗(yàn)證碼處理的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!