什么是QTP中的描述性编程(编程描述)

什么是QTP中的描述性编程(编程描述),qtp,hp-uft,Qtp,Hp Uft,什么是QTP中的描述性编程?描述性编程是在不使用任何对象存储库的情况下编写QTP脚本不使用对象存储库创建测试称为描述性编程,因为您将对象描述为脚本的一部分 e、 g 注意测试对象名称中的:=,这不是一个笑脸,它意味着属性title具有值Google(作为正则表达式) 您还可以通过Description.Create使用Description对象 您可以查看更多详细信息。为qtp编写描述性编程 您想在一个磁盘上执行一个操作 对象中不存在的对象 对象存储库 设置文本框的值 Browser(“Brow

什么是QTP中的描述性编程?

描述性编程是在不使用任何对象存储库的情况下编写QTP脚本

不使用对象存储库创建测试称为描述性编程,因为您将对象描述为脚本的一部分

e、 g

注意测试对象名称中的
:=
,这不是一个笑脸,它意味着属性
title
具有值
Google
(作为正则表达式)

您还可以通过
Description.Create
使用
Description
对象


您可以查看更多详细信息。

为qtp编写描述性编程 您想在一个磁盘上执行一个操作 对象中不存在的对象 对象存储库

设置文本框的值

Browser(“Browser”).Page(“Page”).WebEdit(“Name:=textbox_name”,”html tag:=INPUT”).set “My New value”

阅读更多内容
查看这篇关于该主题的广泛文章
“描述性编程”用词不当


它被用作“动态对象识别”的同义词,非常误导。

我们在测试脚本中直接指定的属性和值等对象的描述被称为描述性程序
我们主要可以在不使用对象存储库的情况下使用描述性程序。

当我们想要对未存储在对象存储库中的对象执行操作时,可以使用描述性编程。通过这种方式,QTP不会在对象存储库中搜索对象属性,而是从语句中获取该属性。

在许多场景中使用描述性编程,例如

  • 当QTP无法从对象存储库中存储的属性值中识别对象时
  • 当用户不想使用或绕过对象存储库时
  • 当用户想要编写一段可以在多个网站上运行的代码时。例如,当我们想要打印Google或yahoo上所有链接的名称时,我们可以使用公共属性值使用同一段代码
它有两种用途:

  • 静态描述性编程

    在这里,我们直接在测试脚本中使用属性和值来访问对象。例如

    Browser("micClass:=.....").Page("micClass:=...").Link("micClass:=...")
    
    Set objTest = Description.Create
    objTest("micClass").Value = "Link"
    objTest("name").value = "Click Here"
    
    注意:我们可以随时开始描述性编程,但一旦开始,我们就不能使用对象存储库,直到行完成

  • 动态描述规划

    这里我们创建一个描述对象,然后对其进行操作。例如

    Browser("micClass:=.....").Page("micClass:=...").Link("micClass:=...")
    
    Set objTest = Description.Create
    objTest("micClass").Value = "Link"
    objTest("name").value = "Click Here"
    

  • 使用描述性编程,我们可以在QTP中定义对象,而无需使用OR(对象存储库)。这是一个很好的教程,介绍了三种进行描述性编程的方法:

    浏览器(“title:=Google”)。页面(“title:=Google”)。链接(“text:=Advanced Search”)。单击 这不是一个描述性的编程,这是一个糟糕的做法。 参数应该和代码分开,所以在本例中,您可以在对象存储库文件的1个位置对其进行更改

    什么是描述性编程-使用描述对象时:

    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 )
    

    所以,我们的想法是使用description来获取集合并搜索该集合中的元素

    关于描述性编程,我能说的是,当我们不想使用对象存储库时,我们使用描述性编程。许多人说他们在敏捷开发模式中使用了描述性编程,在敏捷开发模式中,当应用程序还在开发时,他们开始创建自动化脚本(在敏捷模式下)


    我们使用描述性编程,当一些对象动态更改对象属性时,使用给定的断言属性集,很难在不影响脚本性能的情况下识别对象。

    描述性编程用于对qtp中不存在的对象执行操作。它使用[Property->value]。 请参阅以下连结:-


    识别页面中的对象,而不使用具有特殊属性的对象存储库
    当您在同一页面中有多个具有相同ID的对象(例如HTML ID)且需要单击所有对象时,最常用于描述性对象。。。您可以返回所有对象并进行循环以单击对象脚本中使用其属性标识的对象

    除了上述重复之外,我认为这是使用QTP的最佳且最轻量级的方法,vbscript是最简单的语言,即使考虑到这一点,你只需要使用它的一小部分

    也是,。描述性编程,有静态描述性编程和动态描述性编程。静态是为每个要识别/与之交互的对象(即dim myBUTTON)创建一个变量,然后向该变量提供该实际按钮的描述

    它很好而且功能强大,但正如Artem在上面指出的,动态版本(他用完美的代码向您展示)在保持代码整洁方面更具可重用性、友好性和外观。您创建一个描述对象,并根据您的各种需求不断重新定义它,因此(使用Artems命名约定)ODEC可以成为您单击的按钮、单击的链接,并且您可以在代码中继续重新定义它(通过为该对象提供相同的属性/值)。它更整洁,而且你不会有一百万个变量名到处乱飞,所以它更清晰。动态描述编程!它有一些好的方面和故障排除,这取决于您传递给对象的值,所以请随时与我联系,
    Y.

    简单地说,我们可以说通过代码来描述对象,而不是对象存储库

    示例代码

    Browser("title:=Google").Page("title:=Google").Link("text:=Advanced Search").Click
    
    基于对象的代码

    Browser("Google").Page("Google").Link("Advanced Search").Click
    

    你需要所有的对象

    把它想象成寻找一个位置(比如寻找对象),对象存储库就像一个地图应用程序(例如,谷歌地图),你只需给出记录的位置,它就会为你找到它


    描述性编程基本上是您了解对象和