自動化測試登錄頁面一般都會存在驗證碼校驗問題,大部分童鞋都是直接把驗證碼校驗關閉掉,下面記錄的是如何獲取驗證碼圖片的方法:
1.首先獲取登錄頁面圖片;
2.確定驗證碼坐標和大小;
3.通過坐標和尺寸在登錄頁面上截取驗證碼圖片;
4.截取的驗證碼圖片保存為新的文件。
代碼實現如下:
from selenium import webdriver import time from PIL import Image file_name = "C:/test.png" driver = webdriver.Chrome() driver.get("********") driver.maximize_window() time.sleep(2) # 1.登錄頁面截圖並保存在C:/test.png driver.save_screenshot(file_name) # 2.獲取圖片驗證碼坐標和尺寸 code_element = driver.find_element_by_xpath(".//*[@id='verifyCodeImg']") left = code_element.location['x'] top = code_element.location['y'] right = code_element.size['width']+left height = code_element.size['height']+top im = Image.open(file_name) # 3.截取圖片驗證碼 img = im.crop((left, top, right, height)) # 4.截取的驗證碼圖片保存為新的文件 img.save(file_name) driver.close()
注:以上方法不是並非能精准獲取驗證碼圖片,比如登錄驗證了嵌套在iframe中,此時的驗證碼相對坐標位置就是iframe區域,這里就需要先截取整個iframe區域(iframe.png),然后根據驗證碼坐標位置在獲取的iframe圖片(iframe.png)上進行截取,最終獲得圖片驗證碼;
驗證碼識別請查看下一篇博文:Python調用百度OCR識別API實現文字圖片識別