Python+Selenium UI自動(dòng)化測(cè)試(一):登錄頁(yè)面識(shí)別驗(yàn)證碼

????????在用Python睬罗,selenium UI自動(dòng)化模擬登錄操作時(shí)苍姜,都會(huì)有驗(yàn)證碼,一般解決驗(yàn)證碼有以下幾種方法:

1曼月、讓開(kāi)發(fā)先把驗(yàn)證碼屏蔽掉

? ? ?簡(jiǎn)單粗暴

2谊却、開(kāi)發(fā)給我們?cè)O(shè)置一個(gè)萬(wàn)能的驗(yàn)證碼

????設(shè)置萬(wàn)能碼,就是不管什么情況哑芹,輸入萬(wàn)能碼炎辨,都可以成功登錄網(wǎng)站

3、驗(yàn)證碼識(shí)別技術(shù)-tesseract

????只是識(shí)別一些簡(jiǎn)單的驗(yàn)證碼聪姿,太復(fù)雜的難以通過(guò)碴萧,而且受限于所識(shí)別圖片的質(zhì)量

4、添加cookie登錄

????首先獲取網(wǎng)站登陸后的cookie末购,然后通過(guò)添加cookie的方式破喻,實(shí)現(xiàn)網(wǎng)站登陸的目的


我用的是第三種,用tesseract識(shí)別Python PIL庫(kù)截取的驗(yàn)證碼圖片盟榴,然后得到驗(yàn)證碼低缩。

一、安裝PIL模塊(Python Imaging Library)

????cmd命令:pip install Pillow

????PIL是Python的圖像處理標(biāo)準(zhǔn)庫(kù)曹货,可以做很多和圖像處理相關(guān)的事情:

????????圖像歸檔(Image Archives)。PIL非常適合于圖像歸檔以及圖像的批處理任務(wù)讳推。你可以使用PIL創(chuàng)建縮略圖顶籽,轉(zhuǎn)換圖像格式,打印圖像等等银觅。

????????圖像展示(Image Display)礼饱。PIL較新的版本支持包括Tk PhotoImage,BitmapImage還有Windows DIB等接口。PIL支持眾多的GUI框架接口镊绪,可以用于圖像展示匀伏。

????????圖像處理(Image Processing)。PIL包括了基礎(chǔ)的圖像處理函數(shù)蝴韭,包括對(duì)點(diǎn)的處理够颠,使用眾多的卷積核(convolution kernels)做過(guò)濾(filter),還有顏色空間的轉(zhuǎn)換。PIL庫(kù)同樣支持圖像的大小轉(zhuǎn)換榄鉴,圖像旋轉(zhuǎn)履磨,以及任意的仿射變換。PIL還有一些直方圖的方法庆尘,允許你展示圖像的一些統(tǒng)計(jì)特性剃诅。這個(gè)可以用來(lái)實(shí)現(xiàn)圖像的自動(dòng)對(duì)比度增強(qiáng),還有全局的統(tǒng)計(jì)分析等

二驶忌、安裝pytesseract模塊

????cmd命令:pip install pytesseract

????tesserocr與pytesseract是Python的一個(gè)OCR識(shí)別庫(kù)矛辕,但其實(shí)是對(duì)tesseract做的一層Python API封裝,pytesseract是Google的Tesseract-OCR引擎包裝器付魔,運(yùn)行的時(shí)候是pytesseract去調(diào)用tesserocr

三聊品、安裝tesseract-ocr

????Python-tesseract是一個(gè)基于google's Tesseract-OCR的獨(dú)立封裝包,我們需要下載Tesseract-OCR進(jìn)行安裝抒抬,安裝完之后需要配置環(huán)境變量才能使用杨刨,否則會(huì)提示找不到

? ?1、 下載地址:tesseract-ocr-setup-4.00.00dev.exe

????????但是我下載文件的時(shí)候特別慢擦剑,后來(lái)用的好心人分享的百度云文件下載然后安裝的

????2妖胀、環(huán)境配置

? ? ? ? (1)、添加環(huán)境變量:?TESSDATA_PREFIX = F:\Tesseract-OCR\tessdata(自己安裝的路徑)惠勒,然后將F:\Tesseract-OCR添加到path中

????????(2)赚抡、如下圖找到pytesseract.py文件,打開(kāi)該文件

????????tesseract_cmd = 'tesseract' 改為:

????????tesseract_cmd = r'F:\Tesseract-OCR\tesseract.exe'(自己安裝的路徑)



至此環(huán)境全部準(zhǔn)備完畢纠屋,loginWeb_test代碼如下:

import unittest,time,pytesseract

from common import getURLParams

from selenium import webdriver

from PIL import Image,ImageEnhance

class LoginWebTest(unittest.TestCase):

? ? def setUp(self):

? ? ? ? self.web_url = getURLParams.web_url

? ? ? ? self.driver = webdriver.Chrome()

? ? def tearDown(self):

? ? ? ? print("end")

? ? def readVeriCode(self,driver):

? ? ? ? # 截圖或驗(yàn)證碼圖片保存地址

? ? ? ? screenImg = "F:\工作\screenImg.png"

? ? ? ? # 瀏覽器頁(yè)面截屏

? ? ? ? driver.get_screenshot_as_file(screenImg)

? ? ? ? # 定位驗(yàn)證碼位置及大小

? ? ? ? location = driver.find_element_by_id('verify_code').location

? ? ? ? size = driver.find_element_by_id('verify_code').size

? ? ? ? left = location['x']

? ? ? ? top = location['y']

? ? ? ? right = location['x'] + size['width']

? ? ? ? bottom = location['y'] + size['height']

? ? ? ? # 從文件讀取截圖涂臣,截取驗(yàn)證碼位置再次保存

? ? ? ? img = Image.open(screenImg).crop((left, top, right, bottom))

? ? ? ? img = img.convert('L')? # 轉(zhuǎn)換模式:L | RGB

? ? ? ? img = ImageEnhance.Contrast(img)? # 增強(qiáng)對(duì)比度

? ? ? ? img = img.enhance(2.0)? # 增加飽和度

? ? ? ? img.save(screenImg)

? ? ? ? # 再次讀取識(shí)別驗(yàn)證碼

? ? ? ? img = Image.open(screenImg)

? ? ? ? code = pytesseract.image_to_string(img)

? ? ? ? # code= pytesser.image_file_to_string(screenImg)

? ? ? ? print(code.strip())

? ? ? ? return code.strip()

? ? def test_login(self):

? ? ? ? driver=self.driver

? ? ? ? driver.get(self.web_url)

? ? ? ? driver.find_element_by_id("loginName").send_keys("admin")

? ? ? ? driver.find_element_by_id("passWord").send_keys("xxxx")

? ? ? ? code=self.readVeriCode(driver)

? ? ? ? driver.find_element_by_id("number").send_keys(code)

? ? ? ? driver.find_element_by_id("loginBtn").click()

? ? ? ? time.sleep(5)

? ? ? ? info=driver.find_element_by_class_name("text-success").text

? ? ? ? print("info:",info)

? ? ? ? self.assertEqual(info,"歡迎使用xxxxxx系統(tǒng)","登錄失敗")

? ? ? ? time.sleep(5)#time sleep() 函數(shù)推遲調(diào)用線程的運(yùn)行 t -- 推遲執(zhí)行的秒數(shù)

? ? ? ? driver.quit()


if __name__ == '__main__':

? ? unittest.main()

每天多學(xué)一點(diǎn)點(diǎn)~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市售担,隨后出現(xiàn)的幾起案子赁遗,更是在濱河造成了極大的恐慌,老刑警劉巖族铆,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件岩四,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡哥攘,警方通過(guò)查閱死者的電腦和手機(jī)剖煌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)材鹦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人耕姊,你說(shuō)我怎么就攤上這事桶唐。” “怎么了茉兰?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵尤泽,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我邦邦,道長(zhǎng)安吁,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任燃辖,我火速辦了婚禮鬼店,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘黔龟。我一直安慰自己妇智,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布氏身。 她就那樣靜靜地躺著巍棱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蛋欣。 梳的紋絲不亂的頭發(fā)上航徙,一...
    開(kāi)封第一講書(shū)人閱讀 51,679評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音陷虎,去河邊找鬼到踏。 笑死,一個(gè)胖子當(dāng)著我的面吹牛尚猿,可吹牛的內(nèi)容都是我干的窝稿。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼凿掂,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼伴榔!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起庄萎,我...
    開(kāi)封第一講書(shū)人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤踪少,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后糠涛,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體秉馏,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年脱羡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了萝究。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡锉罐,死狀恐怖帆竹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情脓规,我是刑警寧澤栽连,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站侨舆,受9級(jí)特大地震影響秒紧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜挨下,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一熔恢、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧臭笆,春花似錦叙淌、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至茵乱,卻和暖如春茂洒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背瓶竭。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工督勺, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人在验。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓玷氏,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親腋舌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子盏触,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容