• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    軟件測試工具中QTP處理驗證碼的一種方法

    發布: 2010-5-04 17:32 | 作者: 網絡轉載 | 來源: 領測軟件測試網 | 查看: 131次 | 進入軟件測試論壇討論

    領測軟件測試網

    軟件測試工具中QTP處理驗證碼的一種方法

    QTP在測試WEB站點應用程序時,通常會碰到驗證碼的問題(尤其是論壇類的站點),對于這類問題,通常的做法是利用OCR(Optical Character Recognization,光學字符識別)技術,通過識別圖片中的文字來獲取驗證碼,但是這種方法可靠性不高,受到驗證碼圖片混淆程度的影響。另外一種做法是在開發階段由程序員屏蔽驗證碼功能,或者提供所謂的“萬能驗證碼”。

      本文介紹在測試Discuz !NT 2.5論壇系統時的關于驗證碼獲取和設置的一種解決辦法。通過分析Discuz的源代碼,發現驗證碼保存在數據庫的dnt_online表中:

    /// <summary>
    /// 檢查在線用戶驗證碼是否有效
    /// </summary>
    /// <param name="olid">在組用戶ID</param>
    /// <param name="verifycode">驗證碼</param>
    /// <returns>在組用戶ID</returns>
    public bool CheckUserVerifyCode(int olid, string verifycode, string newverifycode)
    {
      DbParameter[] parms = {
      DbHelper.MakeInParam("@olid", (DbType)SqlDbType.Int, 4, olid),
      DbHelper.MakeInParam("@verifycode", (DbType)SqlDbType.VarChar, 10, verifycode)
      };
    DataTable dt = DbHelper.ExecuteDataset(CommandType.Text, string.Format("SELECT TOP 1 [olid] FROM [{0}online] WHERE [olid]=@olid and [verifycode]=@verifycode", BaseConfigs.GetTablePrefix), parms).Tables[0];
    parms[1].Value = newverifycode;
    DbHelper.ExecuteNonQuery(CommandType.Text, string.Format("UPDATE [{0}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

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: qtp QTP 工具 軟件測試 驗證


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>