QTP处理验证码的一种方法

QTP深入学习----对象库编程的操作流程 QTP的关键字视图和专家视图 1、Keyword view(关键字视图) 在录制脚本的过程中,用户执行的每一个步骤,在关键字视图中记录为一行。 关键字视图直观有效,用户可以很清楚的看到被录制对象的录制层次及操作步骤。 在关键字视图中一共有4列:Item,Operation,Value,Documentation Item:记录了所有对象 Operation:对该对象的操作 Value 阅读详情

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

 

 

QTP如何获取图片验证码,并去除空格。 解决QTP自动化测试获取图片验证码的问题,并且去除获取到的验证码的空格。 立即下载

相关推荐

软件测试工具QTP处理验证码的一种方法

QTP验证软件测试工具QTP处理验证码的一种方法QTP在测试WEB站点应用程序时,通常会碰到验证码的问题(尤其是论坛类的站点),对于这类问题,通常的做法是利用OCR(OpticalCharacterRecognization,光学字符识别)技术,通过识别图片中的文字来获取验证码,但是软件测试工具QTP处理验证码的一种方法 QTP在测试WEB站点应用程序时,通常会碰到验证码的问题(尤其是论坛类的站点),对于这类问题,通常的做法是利用OCR(OpticalCharacterRecognization,光学字符识别)技术,通过识别图片中的文字来获取验证码,但是这种方法可靠性不高,受到验证码图片混淆程

QTP识别验证码

大家在使用QTP进行自动化测试的过程中经常会遇到图片验证码的问题——大家所关心的就是如何解决此类问题。 这里我们首先要去了解为什么会有图片验证码。其实验证码的本质作用就是防止有人利用工具(灌水机、注册机,当然也不小心包括了我们的自动化测试工具)恶意猜解登陆或者不停的注册和灌水的。因此如果我们完全寄希望于通过GUI识别来获取内容是不切实际的——先打好预防针,免得读者希望太大,失望更大,呵呵!  

ningmeng2010的专栏 1518

Python爬虫实战:5分钟抓取东方财富股票数据并保存为CSV

在投资分析与量化研究的日常工作中,获取结构化、可用的金融数据往往是第一步。对于个人投资者和量化入门者而言,如何高效获取A股全市场行情,常常面临网页动态加载、反爬机制与数据整理繁琐等挑战。本文从数据采集的基础概念出发,介绍如何利用Python这一通用编程语言,通过requests库请求财经网站公开的HTTP接口,获取返回的JSON数据,再借助pandas进行字段映射、数据清洗与表格化处理。这种方式相比传统页面解析具有响应快、结构稳定、易于批量操作的显著优势,尤其适合构建个人股票数据池、验证选股策略或进行市场情

weixin_33146151的博客 251

如何用QTP获取网页中的图片验证码(转载)

大家在使用QTP进行自动化测试的过程中经常会遇到图片验证码的问题——大家所关心的就是如何解决此类问题。 这里我们首先要去了解为什么会有图片验证码。其实验证码的本质作用就是防止有人利用工具(灌水机、注册机,当然也不小心包括了我们的自动化测试工具)恶 意猜解登陆或者不停的注册和灌水的。 解决图片验证码的思路:利用QTP9.5的OCR机制抓取文本内容。 在QTP9.5中,对象...

weixin_30564785的博客 150

手把手教你设计2bit反射型超表面:从单patch扫参到pin管配置全流程

本文提供了一份2bit反射型超表面设计的完整工程实践指南。从单贴片谐振器的参数化扫描与“270度法则”应用,到PIN二极管等效电路模型的获取与集成,再到利用参数化扫描高效仿真四种工作状态,手把手指导读者完成从单元设计到阵列布局、偏置线集成及加工考量的全流程,旨在帮助射频工程师将概念转化为可加工测试的实体模型。

java5的博客 1020

我从华为身上学到的项目管理经验 -- 需求篇

记录这三年,关于项目管理上的一些心得体会 – 需求篇对于需求,我们可以根据不同的角色、理解拆分成三个过程:简单来说就是:需求分析原始需求、 需求拆分为系统需求、 需求实现为功能需求**需求分析**: 将客户需求 输出成 需求描述。 需求经理需要把 需求 转换成 客户能够接受的 初始需求 IR(Initial Requirement) 对于用户来说,我只管提 我的原始需求是

minminzhe520的博客 3万+

半自动解决QTP录制验证码问题

Browser("登录").Page("登录").WebEdit("LoginName").Set "admin" Browser("登录").Page("登录").WebEdit("Password").SetSecure "4ef96d3675e61a40b02a4f90de1da4b794a3" Dim Input Input = InputBox("Enter your pic no

爱测试,爱生活 4079

【感知模块算法】障碍物detect+trace+prediction方向介绍

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言一、多维度看感知问题,体会复杂性二、障碍物/环境目标detect方向1.视觉目标检测方向(1)图像处理认知(2)视觉基础理论部分1、获取数据集---python网页爬虫、买数据、自己录数据、使用开源比赛的数据集2、opencv库的学习3、深度学习框架学习(3)视觉目标检测理论(1)目标检测的概念(2)目标检测的应用场景(3)现有目标检测框架原理及论文【这仅仅是我当初入门学习的框架~

qq_35635374的博客 2894

QTP解决验证码问题

Dim Input   Input = InputBox("请输入验证码:")   Browser("证书错误: 导航已阻止").Page("网上交易系统").WebEdit("WebEdit_3").Set Input

joan 394

05 SAP CPI 访问第一个CPI接口

其中的clientid的值可作为Basic验证的用户名,clientsecret的值可作为Basic验证的密码。点击SEND按钮,可看见返回状态为200 OK。在04中,我们得到TOKEN令牌。POSTMAN向下滚动。点击按钮获取token。

SAP CPI 662

电子元器件-接口电路篇:RS-232、RS485/422、I2C、SPI、USB、网口

以上规定说明了RS-232C 标准对逻辑电平的定义。对于数据(信息码):逻辑“1”的传输的电平为-3V~-15V,逻辑“0”传输的电平为+3V~+15V;对于控制信号;接通状态(ON)即信号有效的电平为+3V~+15V,断开状态(OFF)即信号无效的电平为-3V~-15V,也就是当传输电平的绝对值大于3V 时,电路可以有效地检查出来;

qq_60226558的博客 887

利用QTP TextUtil对象获取图片验证码

在测试的过程中登陆或者注册之类的界面可能会存在图片验证码,因为图片验证码是存在于图片中的,所以很难通过一般对象的处理办法去获取到我们需要的验证码,在自动化测试的过程中,为了提高效率,我们通常是会在程序中将验证码屏蔽或者设置为万能码。但是对于那些比较简单,没有添加任何“杂音”的图片验证码,我们可以尝试使用qtp的OCR去识别验证码,比如qtp的中的文本区域输出值等获取验证码。这里介绍一个qtp的文本

erix1991的专栏 1337

彻底解决Win11锁屏界面黑屏或者图片不变化

windows锁屏后黑屏

renkai721的专栏 1万+

QTP - 网站上的验证码录制

http://bbs.51testing.com/thread-159897-1-2.html http://bbs.51testing.com/thread-161144-1-22.html     经过以上两个帖子的学习,终于至少可以录制那些比较“清晰”的验证码了。所谓清晰,是不带干扰背景的,但是至少可以获取累死的文字,所以说明方法还是成功了。所以还是挺高兴的,在这里记录一下方法:

vikesgao 722

2026.4.15:超详细自动安装Ubuntu-Server的保姆级教程

这篇教程详细介绍了如何创建无人值守的Ubuntu Server 26.04自动安装镜像。主要内容包括:从安装镜像中提取autoinstall-user-data文件并修改为user-data配置文件;使用mkpasswd生成加密密码;通过软碟通工具修改ISO镜像,添加自动安装所需的user-data和meta-data文件;编辑grub.cfg引导文件以启用自动安装模式。教程提供了完整的yaml配置示例,包含网络、存储、用户等设置,并演示了最终制作完成的自动安装镜像效果。

拥抱具身智能,昇腾Ascend C 743

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

浅谈一下自动化测试中的验证码处理方法小总结

今天跟大家聊一聊自动化测试中的验证码处理方法一些小总结,希望对你们有帮助,有说的不好的地方,还请多多指教!目前,不少网站在用户登录、用户提交信息登登录和输入的页面上使用了验证码技术。验证码技术可以有效防止恶意用户对网站的滥用,使得网站可以有效避免用户信息失窃、广告SPAM等问题。但与此同时,验证码技术的使用却使得WEB自动化测试面临了较大的困难。验证码一般应用在WEB系统涉及登录和输入的页面上,其实现的一般方法是在页面上显示一幅图片,要求用户肉眼识别图片中的信息并将该信息作为输入的一部分进行提交。

YLF123456789000的博客 1261

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

浅谈自动化测试中的验证码处理方法小总结

​目前,不少网站在用户登录、用户提交信息登登录和输入的页面上使用了验证码技术。验证码技术可以有效防止恶意用户对网站的滥用,使得网站可以有效避免用户信息失窃、广告SPAM等问题。但与此同时,验证码技术的使用却使得WEB自动化测试面临了较大的困难。

1201

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

QTP学习资料归总03

先放这备用当我用一些简单的功能开始录制脚本时,发现保存ActiveXScreen的话,生成的脚本很中空间(因为程序会保存每个不同的录制页面),多录一些硬盘空间就满了,而且回放过程会很慢。   但如果不保存活动页(ActiveXScreen),对脚本的再改造/维护起来就相对困难一些。   于是我开始去了解“关键字”视图里的内容,尝试了解代码。慢慢的,我了解到“关键字”视图显示了整个操作步

be_a_happylucky_dog的专栏 624

使用QTP测试Web对象

加载Web插件先启动QTP,再启动浏览器,否则Web元素识别不了最新版本QTP11支持的浏览器:IE:6、7、8Firefox:3.0.x、3.5、QTP支持直接访问DOM(Document Object Model),可以通过DOM来访问HTML标签。例如:On Error Resume NextSet Doc = Browser("Google").Page("Google").Object...

weixin_30800987的博客 310

如何获取验证码

     很多登录页面都要求我们输入验证码,那么使用QTP应该如何处理这种情况呢?其实很简单,我们只需要写一条语句来给定一个验证码。下面这个例子实现了获取验证码的功能:Dim vaildCode  '定义变量'输入用户名Browser("优快云 用户登录").Page("优快云 用户登录").WebEdit("ctl00$CPH_Content$tb_LoginName").Set "tester_ran250"'输入密码Browser("优快云 用户登录").Page("优快云 用户登录").We

happy106的专栏 3017
上一篇: Sikuli测试应用研究报告
下一篇: QTP测试QQ登录界面
TIB
TIB
博客等级 码龄19年 2879粉丝 957原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值