QTP 中的描述性编程是什么?
17 回答
在不使用对象存储库的情况下创建测试称为描述性编程,因为您将对象描述为脚本的一部分。
例如
Browser("title:=Google").Page("title:=Google").Link("text:=Advanced Search").Click
请注意:=
测试对象名称中的 ,这不是笑脸,这意味着该属性title
具有值Google
(作为正则表达式)。
您还可以通过 使用该Description
对象Description.Create
。
您可以在此处查看更多详细信息。
当您想要对对象存储库中不存在的对象执行操作时,使用描述性编程。
设置文本框的值
Browser(“Browser”).Page(“Page”).WebEdit(“Name:=textbox_name”,”html tag:=INPUT”).set “My New value”
阅读更多
查看有关该主题的广泛文章
http://www.learnqtp.com/descriptive-programming-simplified/
描述性编程是在没有任何对象存储库的情况下编写 qtp scpriting
描述性编程用于许多场景,例如
- 当 QTP 无法从存储在对象存储库中的属性值中识别对象时。
- 当用户不想使用对象存储库或绕过它时。
- 当用户想要编写一段可以在多个网站上运行的代码时。例如,当我们想打印 Google 或 yahoo 上所有链接的名称时,我们可以使用相同的代码,使用公共属性值
它以两种方式使用:
静态描述性编程
这里我们直接在测试脚本中使用属性和值来访问对象。例如。
Browser("micClass:=.....").Page("micClass:=...").Link("micClass:=...")
注意:我们可以随时开始描述性编程,但是一旦开始我们就不能使用对象存储库,直到行完成。
动态描述性规划
在这里,我们创建一个描述对象,然后对其进行操作。例如。
Set objTest = Description.Create objTest("micClass").Value = "Link" objTest("name").value = "Click Here"
当我们想要对未存储在对象存储库中的对象执行操作时,使用描述性编程。这样,QTP 就不会在对象存储库中搜索对象属性,而是从语句中获取它。
我们在测试脚本中直接指定的属性和值等对象的描述称为描述性程序 主要我们可以在不使用对象存储库的情况下使用描述性程序。
描述性编程用于对我们在 qtp 中不存在的对象执行操作。它使用 [Property -> value]。请参考以下链接:-
Browser("title:=Google").Page("title:=Google").Link("text:=Advanced Search").Click 不是描述性编程,这是一种不好的做法。参数应该与代码分开,因此您可以在 1 个地方更改它们,在这种情况下是 Object Repository 文件。
什么是描述性编程 - 当您使用描述对象时:
Dim oDesc 'Description Object
Dim colObject 'Object Collection
Set oDesc = Description.Create
oDesc( "micclass" ).value = "Link"
oDesc( "text" ).value = ".*ma.*" 'Images
oDesc( "text" ).regularExpression = False
Set colObject = Browser( "Google").Page("Google").ChildObjects( oDesc )
所以想法是使用描述来获取集合并在该集合中搜索您的元素。
在没有具有特殊属性的对象存储库的情况下识别页面中的对象 当您在同一页面中有多个具有相同 HTML ID 的对象并且您需要单击所有对象时,最常用于描述性对象...您可以返回所有对象对象并循环单击您在对象脚本中标识的对象及其属性
关于描述性编程,我可以说的是,当我们不想使用对象存储库时,我们会使用描述性编程。许多人说他们在敏捷开发模式下使用描述性编程,在这种模式下,他们开始创建自动化脚本,而应用程序仍在开发中(在敏捷模式下)。
我们使用描述性编程,当一些对象动态地改变对象属性并且具有给定的断言属性集时,很难在不影响脚本性能的情况下识别对象。
使用描述性编程,我们可以在 QTP 中定义对象,而无需使用 OR(对象存储库) 这是一个很好的教程,描述了进行描述性编程的三种方法:http ://www.bytetips.com/descriptive-programming-in-qtp /
除了上述所有重复之外,我想说这是使用 QTP 的最佳和最轻量级的方式,vbscript 是最简单的语言,即使考虑到这一点,您也只会使用其中的一小部分。
也重新。描述性编程,有静态描述性编程和动态描述性。静态为您要识别/交互的每个对象创建一个变量(即暗淡 myBUTTON ),然后将该实际按钮的描述提供给该变量。
它很好而且功能齐全,但正如 Artem 上面指出的那样,动态版本(他以完美的代码向您展示)在保持代码整洁方面更具可重用性和友好性,并且看起来更好。您创建一个描述对象,并不断地重新定义它以满足您的各种需求,因此(使用 Artems 命名约定)oDesc 可以成为您单击的按钮,您单击的链接,并且您可以在访问时不断重新定义它代码(通过为该对象提供相同的属性/值)。它更整洁,而且你没有一百万个变量名遍布整个地方,因此更清晰。动态描述性编程!它有一些细节和故障排除,具体取决于您传递给对象的值,所以请随时与我联系,Y。
简单来说,我们可以说通过代码描述对象,而不是对象存储库。
示例代码
Browser("title:=Google").Page("title:=Google").Link("text:=Advanced Search").Click
基于对象的代码
Browser("Google").Page("Google").Link("Advanced Search").Click
你需要反对所有人
可以将其视为查找位置(如查找对象),对象存储库用作地图应用程序(例如,Google 地图),您只需提供记录的位置,它就会为您找到它。
描述性编程基本上是您了解对象及其元素。这意味着您知道回家的路,或者至少随身携带地图以找到位置。
两者都有优点和缺点。假设你的手机没电了,或者没有网络,谷歌地图(对象存储库)就不再适合你了。您必须采用本地方式。
描述性编程用于完全避免使用对象存储库或避免在对象存储库中添加类似类型的对象。要通过示例了解描述性编程的所有可能用途,请参阅 https://myskillpoint.com/descriptive-programming-in-uft-with-examples/
“描述性编程”是用词不当。
它被非常误导地用作“动态对象识别”的同义词。
为 qtp 编写描述性编程