思路
1. 登錄url
2. 獲取驗(yàn)證碼坐標(biāo)
3. 根據(jù)桌標(biāo)截圖驗(yàn)證碼
4. 對(duì)驗(yàn)證碼進(jìn)行識(shí)別文章來源:http://www.zghlxwxcb.cn/news/detail-730672.html
5. 自動(dòng)輸入驗(yàn)證碼文章來源地址http://www.zghlxwxcb.cn/news/detail-730672.html
測(cè)試代碼
import os
import time
from io import BytesIO
from PIL import Image
from selenium import webdriver
from selenium.webdriver.common.by import By
import sys
import ddddocr
import uuid
if __name__ == '__main__':
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("http://172.16.12.129/DVWA/login.php")
#driver.get('https://icpc.ldu.edu.cn/login')
#driver.get('http://admin.dlszyht.com/login.php')
#driver.get("https://icpc.ldu.edu.cn/login")
time.sleep(2)
# 執(zhí)行js,對(duì)頁面進(jìn)行縮放,100 占 125 的 80%
# driver.execute_script('document.body.style.zoom="0.8"')
# 要截圖的元素
#element = driver.find_element_by_css_selector('#captcha')
#element = driver.find_element("id", "su")
#element = driver.find_element("id", "captcha").
#element = driver.find_element("title", "看不清,換一個(gè)")
#element = driver.find_element(By.TAG_NAME, "form")
element = driver.find_element(By.CSS_SELECTOR, 'img[title="點(diǎn)擊圖片重新獲取驗(yàn)證碼"]')
#element = driver.find_element("id", "vcodesrc")
# 坐標(biāo)
x, y = element.location.values()
# 寬高
h, w = element.size.values()
# x = element.location['x'] # 獲取驗(yàn)證最左邊位置
# y = element.location['y'] # 獲取驗(yàn)證碼上邊位置
# w = x + element.size['width'] # 獲取驗(yàn)證碼右邊位置
# h = y + element.size['height'] # 獲取驗(yàn)證碼下邊位置
# 把截圖以二進(jìn)制形式的數(shù)據(jù)返回
image_data = driver.get_screenshot_as_png()
# 以新圖片打開返回的數(shù)據(jù)
screenshot = Image.open(BytesIO(image_data))
# 對(duì)截圖進(jìn)行裁剪
result = screenshot.crop((x, y, x + w, y + h))
# 顯示圖片
#result.show()
pic_captcha_name = "{}{}{}{}".format(os.path.dirname(os.path.realpath(__file__)), "/tmpfile/", uuid.uuid4(), ".png")
result.save(pic_captcha_name)
#"""
ocr = ddddocr.DdddOcr()
with open(pic_captcha_name, 'rb') as f:
img_bytes = f.read()
res = ocr.classification(img_bytes)
print(res)
os.remove(pic_captcha_name)
#"""
到了這里,關(guān)于selenium實(shí)現(xiàn)輸入數(shù)字字母驗(yàn)證碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!