分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!
qtp在測試web站點應用程式時,通常會碰到驗證碼的問題(尤其是論壇類的站點),對於這類問題,通常的做法是利用ocr(optical character recognization,光學字元識別)技術,通過識別中的文本來獲取驗證碼,但是這種方法可靠性不高,受到驗證碼混淆程度的影響。另外一種做法是在開發階段由程式設計師遮蔽驗證碼功能,或者提供所謂的「萬能驗證碼」。
本文介紹在測試discuz !nt 2.5論壇系統時的關於驗證碼獲取和設定的一種解決辦法。通過分析discuz的源**,發現驗證碼儲存在資料庫的dnt_online表中:
///
///
/// 在組使用者id
/// 驗證碼
/// 在組使用者id
public bool checkuserverifycode(int olid, string verifycode, string newverifycode)
; datatable dt = dbhelper.executedataset(commandtype.text, string.format("select top 1 [olid] from [online] where [olid]=@olid and [verifycode]=@verifycode", baseconfigs.gettableprefix), parms).tables[0];
parms[1].value = newverifycode;
dbhelper.executenonquery(commandtype.text, string.format("update [online] set [verifycode]=@verifycode where [olid]=@olid", baseconfigs.gettableprefix), parms);
return dt.rows.count > 0; }
dnt_online表中的最後乙個欄位verifycode儲存的就是驗證碼。驗證碼是在使用者登入論壇後隨機產生並存入表中的,在管理員選擇「系統設定」功能進入「管理員控制台」模組之前需要輸入驗證碼,輸入的驗證碼與dnt_online表中所儲存的驗證碼進行對比,如果一致則接受使用者登入請求。
因此可以在在qtp指令碼中編寫資料庫查詢語句,在登入管理員控制台之前從資料庫dnt_online表獲取到管理員的驗證碼,具體的qtp指令碼如下所示:
' 登入論壇
browser("discuz!nt asp.net|論壇-").page("discuz!nt asp.net|論壇-").webedit("username").click
browser("discuz!nt asp.net|論壇-").page("discuz!nt asp.net|論壇-").webedit("username").set "admin"
browser("discuz!nt asp.net|論壇-").page("discuz!nt asp.net|論壇-").webedit("password").set "123456"
browser("discuz!nt asp.net|論壇-").page("discuz!nt asp.net|論壇-").webbutton("登入").click
' 從資料庫讀取到驗證碼
verifycode = getverifycode ("admin")
' 登入管理員控制台
browser("discuz!nt asp.net|論壇-").page("discuz!nt asp.net|論壇-").link("系統設定").click
browser("管理員控制台登入").page("管理員控制台登入").webedit("password").set "123456"
browser("管理員控制台登入").page("管理員控制台登入").webedit("vcode").set verifycode ' 設定驗證碼
browser("管理員控制台登入").page("管理員控制台登入").webbutton("webbutton").click
' 退出
browser("管理員控制台登入").page("系統設定- powered by discuz!nt").frame("mainframe").link("退出").click
function getverifycode( username )
dim conn ' 資料庫連線物件
dim rst ' 資料記錄集物件
dim str_link_dbsource ' 資料庫連線串
dim sqlstr ' sql查詢語句
str_link_dbsource="provider=sqloledb.1;password=sa;persist security info=true;user id=sa;initial catalog=dnt25;data source=chennengji"
sqlstr = "select verifycode from dnt_online where username = '" & username & "'"
set conn=createobject("adodb.connection")
conn.open str_link_dbsource
set rst=createobject("adodb.recordset")
rst.open sqlstr,conn,2,2
rst.movefirst
getverifycode = rst.fields(0) ' 取得驗證碼
rst.close
conn.close
set rst=nothing
set conn=nothing
end function
給我老師的人工智慧教程打call!
3種方法實現隨機驗證碼
1 由4個字元組成的字串 2 4個字元是隨機的數字 大小寫字母 3 4個字元的字型是隨機的,並且顏色,大小都是隨機的 4 同時,字型也是傾斜的 1 在這裡,我們要用到 random 這個隨機函式物件 2 那麼該如何來使用random呢?rabdom 既然是個函式物件,那麼,它肯定是先建立 例項化這個...
簡單的驗證碼處理
廢話不說 直接進入 區 private static final string chararray private string getrandchar int randnumber return chararray randnumber private color getrandcolor int...
(十二)驗證碼的處理
一 去掉驗證碼 對於開發人員來說,只是把驗證碼相關 注釋掉即可,如果是在測試環境,這將可省去測試人員不少麻煩,如果自動化指令碼是在正式環境跑,則會給系統帶來一定的風險。二 設定萬能碼 在 中加個特殊邏輯即可 三 記錄cookie 在我們第一次登陸某 可以勾選 記住密碼 的選項,當下次再訪問該 時自動...