QTP自传之对象库编程】的更多相关文章

对象库编程是我们平时工作中使用最多的编程方式,在自动化脚本开发中起到举足轻重的作用,与描述性性编程相比,更直接和易于维护,今天就和大家简单的聊聊如何进行对象库编程. 既然是对象库编程,肯定要对已存在于对象库中的对象进行编程,先准备将要使用的网页,我们将上一节的例子稍加修改,做出一个简单的用户调查页面. 点击[提交],跳转到用户信息显示页面. 依然采用wamp环境,下面是页面代码,很简单. <html> <head> <title>web对象演示</title>…
对象在手,测试我有 大家别误会,这里说的对象可不是值指男女朋友,而是对被测控件的识别.经过昨天的录制,大家一定很奇怪为什么我可以做到精确的回放操作,这都要归功于对象,下面就隆重的介绍我在对象识别方面的强大功能. 初识对象库 打开上次录制的脚本record,点击[Resources]->[Object Repository]或按快捷键CTRL+R,打开对象库,如下图. 简单介绍下各个按钮的作用. Test Objects:测试中用到的对象都在这里. Checkpoint and Output Ob…
第一步:把需要加到共享对象库中的各个用例脚本的对象库,分别导出成.tsr文件. 操作方法:先用QTP打开已经录制完毕的脚本后,选择Resources-->Object Repository.然后file-->export....取名导出文件 第二步:把需要加入到共享对象库中的各个用例脚本的对象库,合并对象及对象属性,形成一个大的共享对象库. 操作方法:打开Resources-->Object Repository Manager.找到Tools菜单,然后选择打开Object Reposi…
随着科技的进步,“下载-安装-运行”这经典的三步曲已离我们远去.web应用的高速发展,改变了我们的思维和生活习惯,同时也使web方面的自动化测试越来越重要.今天,介绍一下我对web对象的识别,为以后的对象库编程打下基础. Browser Browser对象即浏览器对象,例如IE,FF,Chrome.Browser对象是所有web对象的父级对象,是金字塔的顶端,我在Description properties中对它也没有什么约束.使用Object Spy查看Browser对象 Properties…
QTP的关键字视图和专家视图 1.Keyword view(关键字视图) 在录制脚本的过程中,用户执行的每一个步骤,在关键字视图中记录为一行. 关键字视图直观有效,用户可以很清楚的看到被录制对象的录制层次及操作步骤. 在关键字视图中一共有4列:Item,Operation,Value,Documentation Item:记录了所有对象 Operation:对该对象的操作 Value:对象操作所用到的值 Documentation:QTP自动生成的描述语句 2.Expert view(专家视图)…
描述性编程,即采用描述性的语言定位对象,不需要事先将对象添加到对象库中.下面,就说说如何使用描述性编程,我们将继续使用对象库编程中的网页. 使用描述性编程的两种方法 直接描述 对象("属性名:=属性值","属性名:=属性值"...) 这种方式很形象很好记,比方说要去找个人,就叫张三吧,用上面的公式就是这样. 人("名字:=张三") 如果有多个叫张三的人,可以更具体的描述出特征. 人("名字:=张三","性别:=男&q…
前言 测试报告是测试阶段的最后产出,也是最重要的产出,自动化测试报告也是如此.前期所做的工作,添加对象.编写脚本等都是为了可以生成一份正确.严谨的测试报告.我作为一款功能全面的自动化测试工具,毫无疑问,提供了强大的测试报告定制功能,让我们从对象库编程中的脚本说起吧,脚本代码如下. With Browser("web对象演示") With .Page("web对象演示") .WebEdit("用户名").Set "test" .…
录制,是一件吃力不讨好的活.很多人以为录制就是我的主要甚至全部的功能,这是大错特错的.不过,录制功能却是不熟悉我的人了解我的有效途径,是大家学习的有力武器.今天就先从录制功能说起吧. 说到录制,就不得不提到我的小伙伴Automation,他是制片人,关于录制回放的规则都是在这里制定的.话不多说,下面进入正题. 相关配置 点击[Automation]->[Record and Run Settings] 这里我们选择Record and run test on any open browser,录…
""" python中使用模块和库编程 导入模块 import modulename [as alias] from modulename import fun1,fun2,... modulename:模块名 alias:模块的别名 fun1.fun2:模块中的函数 执行模块 使用import语句和from语句执行导入操作时,导入的模块将被自动执行.模块中的赋值语句被执行后会创建变量,def语句被执行后 会创建函数对象.模块中的全部语句都会被执行,但只执行一次,如果impo…
Thread.h #ifndef _THREAD_H_ #define _THREAD_H_ #include <pthread.h> #include <boost/function.hpp> class Thread { public: typedef boost::function<void ()> ThreadFunc; explicit Thread(const ThreadFunc& func); void Start(); void Join();…
对于我这种以前只接触过51和AVR单片机编程的小菜来说,现在开始学习STM32的编程,对于函数的功能以及C语言的语法都还好理解,难的是它提供的那一套硬件抽象层(HAL)驱动是怎么和其他的东东搭配在一起组成一个又一个的工程. 首先上两张从ST官方提供的HAL固件库文档截图 从这两张图的话,能对它的构架看出个一二,下面稍稍具体一点分析 HAL固件库编程,它的文件组织大致分三个部分 - HAL驱动 - CMSIS驱动 - 用户编写程序 而假如你使用的是ST官网的开发板,那么你还有一套现成的驱动可供使用…
1.前言 这几天有人问我,UI自动化测试中使用到的页面定位元素应该存放在哪里比较合适?我想说的是如果你使用的是PO设计模式设计测试用例的话,可以把定位元素存在每一个page页面,一个page存放对应的TestCase的页面元素,当页面变动的时候方便修改.还有一种就是存放在配置文件下,这样对于不懂得自动化测试的人员也可以配置.那么下面我看就来看一下如何存放到配置文件中?如何来读取并定位? 2.目录结构 测试地址:http://www.sogou.com 测试步骤:1.打开网址2.搜索框输入pyth…
以下是个人使用VB6出现对象库未注册问题的解决方法.已成功! 一.注册ocx文件 mscomctl.ocx文件放进路径C:\Windows\System32(64是此路径,由于本人是64位系统32位未测试)CMD命令:cd C:\Windows\System32regsvr32 mscomctl.ocx 二.注册tlb文件 前提:regtlib.exe文件要放进与下面对应的文件夹(regtlib.exe下载地址:http://download.csdn.net/detail/cuihan_199…
接前文:Linux软件包(源码包和二进制包)及其区别和特点 在前文,我们知道了linux软件包分为源码包和二进制包两种方式,而不同的发行版之间又有着自己的二进制打包格式. 首先,软件运行依赖着各种各样的库,那么安装软件时到底是选择自带依赖库还是共享对象库之间就产生了分歧.最具有代表性的就是Microsoft的msi与linux各种发行版的打包格式的分歧. Windows - MSI MSI文件是Windows Installer的数据包,它实际上是一个数据库,包含安装一种产品所需要的信息和在很多…
UI对象库:使用配置文件存储测试页面上的定位和定位表达式,做到定位数据和程序的分离. 第一步:实现工具类Object工具类,供测试程序调用. /** * 使用配置文件存储测试页面上的定位和定位表达式,做到定位数据和程序的分离 */ import java.io.FileInputStream; import java.io.IOException; import java.util.Properties; import org.openqa.selenium.By; public class O…
1. 创建即使用Dictionary对象 ' 创建Dictionary对象Set Dic = CreateObject("Scripting.Dictionary")' 添加Dictionary的key和valueFor Iterator = 1 To 3 Step 1 Dic.Add CStr(Iterator),Iterator & "_Value"Next' 循环读取Dictionary的key和valueFor Iterator = 1 To Dic…
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max-width: 100%; vertical-align: middle; } button, input, select, textarea { color: inherit; font: inherit; } input[type="checkbox"], input[type=&quo…
读取ini配置文件 配置项 读取API 写入API 实战:UI 对象库 读取ini配置文件 配置项 在每个 ini 配置文件中,配置数据会被分组(比如下述配置文件中的"config"和"cmd"),每个分组中又可以指定对应的变量值. 示例:test.ini # 定义config分组 [config] platformName=Android appPackage=com.romwe appActivity=com.romwe.SplashActivity # 定义c…
Public Function AddObjectRepository(path) On Error Resume Next Dim pos, repath If instr(path,".tsr") Then repath = path else repath = path & ".tsr" End If RepositoriesCollection.RemoveAll() print repath RepositoriesCollection.Add (…
基础知识 Class的定义由两部分组成:class的声明,以及紧接在声明之后的主体.主体部分由一对大括号括住,并以分号结尾.主体内的两个关键字public和private,用来标示每个块的"member访问权限".Public member可以在程序的任何地方被访问,private member只能在member function或是class friend内被访问. class的前置声明(forward declaration),将class名称告诉编译器,并未提供此class的任何…
加载Web插件先启动QTP,再启动浏览器,否则Web元素识别不了最新版本QTP11支持的浏览器:IE:6.7.8Firefox:3.0.x.3.5.QTP支持直接访问DOM(Document Object Model),可以通过DOM来访问HTML标签.例如:On Error Resume Next Set Doc = Browser("Google").Page("Google").Object '  循环获取Page中的所有对象For Each Element…
1.函数对象 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 秉承着一切皆对象的理念,我们再次回头来看函数(function).函数也是一个对象,具有属性(可以使用dir()查询).作为对象,它还可以赋值给其它对象名,或者作为参数传递. lambda函数 在展开之前,我们先提一下lambda函数.可以利用lambda函数的语法,定义函数.lambda例子如下: func = lambda x,y: x + yprint fun…
我叫QTP,全名是HP Quicktest Professional,大家都叫我小Q. 小Q生于1998年,那是一个春天(哈哈咱也是跨世纪的人才).家里人丁兴旺,兄弟众多,L(Loadrunner),C(QC)都是威名赫赫.从我出生的那天起,冥冥之中一直有个声音对我说:有一天,你,终将加冕为王.为此,我付出了所有. 时光荏苒,岁月如梭.不知从何时开始,人们总谈起我,那些隔山之人也知道我QTP的大名,一时间我仿佛成了自动化的代名词.也许,是对手的无私奉献:也许,是上天跟我开的一个玩笑:也许...只…
时间紧张,先记一笔,后续优化与完善. curses库常用函数: 注意编译时要用这样的格式:gcc xxx.c -l curses -o xxx 第一个小例子: include <stdio.h> #include <curses.h> int main() { initscr(); clear(); move(10,20); addstr("Hello, world"); move(LINES-1, 0); refresh(); getch(); endwin(…
数据封装.继承和多态只是面向对象编程中最基础的3个概念. 下面整理面向对象高级编程的更为强大的技巧. 使用__slots__:Python属于动态语言,可以允许已创建好的类动态地绑定任何属性和方法.但是,给实例绑定后,由该类创建的其他其他实例是没有绑定的:不过,可以给类绑定,那么有该类创建的实例均会拥有该属性和方法. >>> class Student(object): ... pass ... >>> s = Student() >>> s.name…
Desktop对象的使用: 通过Desktop对象,可以访问Windows的桌面顶层对象.Desktop对象包括CaptureBitmap.ChildObjects.RunAnalog方法. (1)    使用CaptureBitmap方法来截屏 使用CaptureBitmap方法,可以把屏幕对象的截屏保存为图像文件.例如,下面的代码把屏幕截图保存到指定的文件,并且当存在相同文件时,覆盖原来文件. (2)    使用ChildObjects方法获取某个对象中包含的对象列表 使用ChildObje…
git log -l -pretty=raw // 查看日志 -l是干啥的 git log -pretty=raw // git cat-file -t 哈希值 // 查看id的类型 不知道为啥这里我不一样:即使用git log -l --pretty=raw也只是出现commit的,但是git cat-file -p 哈希值则会出现tree和parent. root@tuhooo:~/workspace/demo # git log commit ac31089960196a531c277dc…
Windows操作系统中,库分为动态链接库(dll)和静态链接库(lib) 动态库是Windows中实现代码共享的一种方式.它是一个二进制式文件,不可单独运行,需要调用方调用才能运行.在Windows中,动态库可以被多种编程语言所支持. 静态链接库不同于动态链接库(dll),在静态库情况下,函数和数据被编译进一个二进制 文件(通常扩展名为*.lib),Visual C++的编译器在链接过程中将从静态库中恢复这些函数和数据并把他们和应用程序中的其他模块组合在一起生成可执行文件.这个过程称为"静态链…
下面来讲讲RegExp对象: Vbs提供了针对正则表达式的一个非常实用的类,就是RegExp Global属性:代表全局匹配 IgnoreCase属性:大小写忽略 Pattern属性:正则表达式 Execute方法:匹配搜索,返回匹配结果集合 Replace方法:匹配代替,返回替代匹配结果 Test方法:测试匹配,返回布尔类型 下面举几个实例: '判断正则匹配是否正确 'msgbox (IsRegMatch("a123","http://www.123.456.com&quo…
Promise 的含义 Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大.所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果.从语法上说,Promise 是一个对象,从它可以获取异步操作的消息.Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理. Promise对象有以下两个特点. (1)对象的状态不受外界影响.Promise对象代表一个异步操作,有三种状态:pending(进…