日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

自动化测试如何解决验证码的问题

發(fā)布時(shí)間:2025/4/16 编程问答 68 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自动化测试如何解决验证码的问题 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

注意:本標(biāo)題的“自動(dòng)化測試” 包括性能測試 與UI級的自動(dòng)化測試

  經(jīng)常會(huì)被問到如何解決驗(yàn)證碼的問題,在此記錄一下我所知道的幾種方式。

  對于web應(yīng)用來說,大部分的系統(tǒng)在用戶登錄時(shí)都要求用戶輸入驗(yàn)證碼,驗(yàn)證碼的類型的很多,有字母數(shù)字的,有漢字的,甚至還要用戶輸入一條算術(shù)題的答案的,對于系統(tǒng)來說使用驗(yàn)證碼可以有效果的防止采用機(jī)器猜測方法對口令的刺探,在一定程度上增加了安全性。但對于測試人員來說,不管是進(jìn)行性能測試還是自動(dòng)化測試都是一個(gè)棘手的問題。

?

下面來談一下處理驗(yàn)證碼的幾種方法。

?

去掉驗(yàn)證碼

  這是最簡單的方法,對于開發(fā)人員來說,只是把驗(yàn)證碼的相關(guān)代碼注釋掉即可,如果是在測試環(huán)境,這樣做可省去了測試人員不少麻煩,如果自動(dòng)化腳本是要在正式環(huán)境跑,這樣就給系統(tǒng)帶來了一定的風(fēng)險(xiǎn)。

?

?

設(shè)置萬能碼

  去掉驗(yàn)證碼的主要是安全問題,為了應(yīng)對在線系統(tǒng)的安全性威脅,可以在修改程序時(shí)不取消驗(yàn)證碼,而是程序中留一個(gè)“后門”---設(shè)置一個(gè)“萬能驗(yàn)證碼”,只要用戶輸入這個(gè)“萬能驗(yàn)證碼”,程序就認(rèn)為驗(yàn)證通過,否則按照原先的驗(yàn)證方式進(jìn)行驗(yàn)證。

#coding=utf-8 import random#生成0到10之間的隨機(jī)數(shù) #d = random.uniform(0,10) #print d#生成一個(gè)1000到9999之間的隨機(jī)整數(shù) d = random.randint(1000,9999) print u"生成的隨機(jī)數(shù):%d " %di = input(u"請輸入隨機(jī)數(shù):") print iif i == d:print u"登錄成功!!" elif i == 1111:print u"登錄成功!!" else:print u"請重新輸入驗(yàn)證碼!"

運(yùn)行結(jié)果:

>>> ================================ RESTART ================================ >>> 生成的隨機(jī)數(shù):3764 請輸入隨機(jī)數(shù):1111 1111 登錄成功!! >>> ================================ RESTART ================================ >>> 生成的隨機(jī)數(shù):3763 請輸入隨機(jī)數(shù):3763 3763 登錄成功!! >>> ================================ RESTART ================================ >>> 生成的隨機(jī)數(shù):1928 請輸入隨機(jī)數(shù):1354646 1354646 請重新輸入驗(yàn)證碼!

random

random用于生成隨機(jī)數(shù)

randint()

randint()方法用于生成隨機(jī)整數(shù),傳遞的兩個(gè)參數(shù)分別是隨機(jī)數(shù)的范圍,randint(1000,9999)第二個(gè)參數(shù)要大于第一個(gè)參數(shù)。

我們要求用戶輸入隨機(jī)數(shù),并且對用戶輸入做判斷,如果等于生成的隨機(jī)數(shù)那么,登錄成功,如果等于1111也算登錄成功,否則失敗。那么等于1111的判斷就是一個(gè)萬能碼。

?

?

驗(yàn)證碼識別技術(shù)

  例如可以通過Python-tesseract?來識別圖片驗(yàn)證碼,Python-tesseract是光學(xué)字符識別Tesseract?OCR引擎的Python封裝類。能夠讀取任何常規(guī)的圖片文件(JPG,?GIF?,PNG?,?TIFF等)。不過,目前市面上的驗(yàn)證碼形式繁多,目前任何一種驗(yàn)證碼識別技術(shù),識別率都不是100%?。

?

?

記錄cookie

(適用于UI自動(dòng)化測試,且目前在大部應(yīng)用的用戶名密碼不記錄在cookie 或 進(jìn)行加密處理。)

  通過向?yàn)g覽器中添加cookie?可以繞過登錄的驗(yàn)證碼,這是比較有意思的一種解決方案。我們可以在用戶登錄之前,通過add_cookie()方法將用戶名密碼寫入瀏覽器cookie?,再次訪問系統(tǒng)登錄鏈接將自動(dòng)登錄。例如下面的方式:

.... #訪問xxxx網(wǎng)站 driver.get("http://www.xxxx.cn/") #將用戶名密碼寫入瀏覽器cookie driver.add_cookie({'name':'Login_UserNumber', 'value':'username'}) driver.add_cookie({'name':'Login_Passwd', 'value':'password'}) #再次訪問xxxx網(wǎng)站,將會(huì)自動(dòng)登錄 driver.get("http://www.xxxx.cn/") time.sleep(3) .... driver.quit()

  使用cookie進(jìn)行登錄最大的難點(diǎn)是如何獲得用戶名密碼的name?,如果找到不到name?的名字,就沒辦法向value?中輸用戶名、密碼信息。

  我建議是可以通過get_cookies()方法來獲取登錄的所有的cookie信息,從而進(jìn)行找到用戶名、密碼的name?對象的名字;當(dāng)然,最簡單的方法還是詢問前端開發(fā)人員。

?

?

總結(jié):

? ? 最簡單安全,行之有效的方式就是設(shè)置萬能碼,稍微和開發(fā)溝通一下就OK了。如果樂于“悶頭苦干自力更生”的話也可研究驗(yàn)證碼識別技術(shù)。

?

轉(zhuǎn)載于:https://www.cnblogs.com/yanghj010/p/4917171.html

總結(jié)

以上是生活随笔為你收集整理的自动化测试如何解决验证码的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。