日历

« 2008-10-07  
   1234
567891011
12131415161718
19202122232425
262728293031 

最新来客

我的好友

统计信息

  • 访问量: 3044
  • 日志数: 39
  • 文件数: 5
  • 建立时间: 2007-01-29
  • 更新时间: 2008-04-21

RSS订阅

我的最新日志

  • 如何连接Oracle数据库9:QTP脚本示例-OLEDB连接方式(三)

    2008-4-21

    '使用OLEDB链接文件的方式

    '**********创建连接对象***************
    Set con=createobject("adodb.connection")

    '连接设置。等号后面的值可以通过以下方法获得:
    '1.新建一个udl文件,双击打开“数据链接”窗口
    ''2.提供程序选择"Oracle Provicer for OLE DB  ",或“Microsoft OLE DB Provider for Oracle”
    '3.设置连接属性。关闭窗口。
     conset="File Name=E:\QTP_TEST\CiisODBCSource\OLEDB1.udl;"
     
     '**************建立连接********************
    con.open conset
    '查看连接是否已建立
    If  con.state=0 Then
     msgbox"failed"
     else
     msgbox"pass"
    End If

    '***************建立空的记录集*************
    Set rs=createobject("adodb.recordset")

    '*************设置SQL语句******************
    sql="select * from sys_role"

    '**************打开记录集,语法:recordset.Open Source, ActiveConnection, CursorType, LockType, Options*********************
    rs.open sql,con

    '将记录集中"rolename"列的0-6行数据Copy到QTP当前DataTable的"OK"列中
    For i=0 to 6
        datatable.SetCurrentRow(i+1)
     datatable.Value("ID","OLEDB3")=rs("ID")
     datatable.Value("NAME","OLEDB3")=rs("rolename")
     rs.movenext
    Next


    '******************关闭连接********************
    con.close

    '****************释放Connection对象*******************
    Set con=nothing

  • 如何连接Oracle数据库8:QTP脚本示例-OLEDB连接方式(二)

    2008-4-21

    'OLEDB的字符连接方式,OLE DB 提供程序为"Oracle Provicer for OLE DB  "

    '**********创建连接对象***************
    Set con=createobject("adodb.connection")

    '连接设置。等号后面的值可以通过以下方法获得:
    '1.新建一个udl文件,双击打开“数据链接”窗口
    ''2.提供程序选择"Oracle Provicer for OLE DB  "。
    '3.设置连接属性。关闭窗口
    '4.以记事本打开文件,复制最后一行的内容,该内容即为连接设置。
     conset="Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=cis;Password=ciis;Data Source=CIIS_192.168.1.27;"
     
     '**************建立连接********************
    con.open conset
    '查看连接是否已建立
    If  con.state=0 Then
     msgbox"failed"
     else
     msgbox"pass"
    End If

    '***************建立空的记录集*************
    Set rs=createobject("adodb.recordset")

    '*************设置SQL语句******************
    sql="select * from sys_role"

    '**************打开记录集,语法:recordset.Open Source, ActiveConnection, CursorType, LockType, Options*********************
    rs.open sql,con

    '将记录集中"rolename"列的0-6行数据Copy到QTP当前DataTable的"OK"列中
    For i=0 to 6
     datatable.SetCurrentRow(i+1)
     datatable.Value("ID","OLEDB2")=rs("ID")
     datatable.Value("NAME","OLEDB2")=rs("rolename")
     rs.movenext
    Next


    '******************关闭连接********************
    con.close

    '****************释放Connection对象*******************
    Set con=nothing

  • 如何连接Oracle数据库7:QTP脚本示例-OLEDB连接方式(一)

    2008-4-21

    'OLEDB的字符连接方式,OLE DB 提供程序为"Microsoft OLE DB Provicer for Oracle"

    '**********创建连接对象***************
    Set con=createobject("adodb.connection")

    '连接设置。等号后面的值可以通过以下方法获得:
    '1.新建一个udl文件,双击打开“数据链接”窗口
    ''2.提供程序选择"Microsoft OLE DB Provicer for Oracle"。
    '3.设置连接属性。关闭窗口
    '4.以记事本打开文件,复制最后一行的内容,该内容即为连接设置。
     conset="Provider=MSDAORA.1;Password=ciis;User ID=cis;Data Source=CIIS_192.168.1.27;Persist Security Info=True;"
     
     '**************建立连接********************
    con.open conset
    '查看连接是否已建立
    If  con.state=0 Then
     msgbox"failed"
     else
     msgbox"pass"
    End If

    '***************建立空的记录集*************
    Set rs=createobject("adodb.recordset")

    '*************设置SQL语句******************
    sql="select * from sys_role"

    '**************打开记录集,语法:recordset.Open Source, ActiveConnection, CursorType, LockType, Options*********************
    rs.open sql,con

    '将记录集中"rolename"列的0-6行数据Copy到QTP当前DataTable的"OK"列中
    For i=0 to 6
     datatable.SetCurrentRow(i+1)
     datatable.Value("ID","OLEDB1")=rs("ID")
     datatable.Value("NAME","OLEDB1")=rs("rolename")
     rs.movenext
    Next


    '******************关闭连接********************
    con.close

    '****************释放Connection对象*******************
    Set con=nothing

  • 如何连接Oracle数据库6:QTP脚本示例-ODBC连接方式(五)

    2008-4-21

    'ODBC的系统DSN连接方式,数据源的驱动为“Oracle in OraClient10g_home1”

    '**********创建连接对象***************
    Set con=createobject("adodb.connection")

    '连接设置。等号后面的值可以通过以下方法获得:
    '1.选择菜单  Insert>Output Value>DataBaseOutPutValue,打开“Database Query Wizard”窗口
    ''2.Query definition选择“Specify SQL statement manually”,点击“下一步”到下一窗口。
    '3.点击“Create”,选择文件数据源,回到前一窗口。(注:ODBC文件数据源必须预先设置好)
    '4.复制Connection string框中的内容,该内容即为连接设置。
     conset="DSN=CIIS1;UID=cis;PWD=ciis;DBQ=CIIS_192.168.1.27;DBA=W;APA=T;EXC=F;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;BTD=F;BAM=IfAllSuccessful;NUM=NLS;DPM=F;MTS=T;MDI=F;CSR=F;FWC=F;FBS=64000;TLO=O;"
     
     '**************建立连接********************
    con.open conset
    '查看连接是否已建立
    If  con.state=0 Then
     msgbox"failed"
     else
     msgbox"pass"
    End If

    '***************建立空的记录集*************
    Set rs=createobject("adodb.recordset")

    '*************设置SQL语句******************
    sql="select * from sys_role"

    '**************打开记录集,语法:recordset.Open Source, ActiveConnection, CursorType, LockType, Options*********************
    rs.open sql,con

    '将记录集中"rolename"列的0-6行数据Copy到QTP当前DataTable的"OK"列中
    For i=0 to 6
     datatable.SetCurrentRow(i+1)
     datatable.Value("ID","ODBC5")=rs("ID")
     datatable.Value("NAME","ODBC5")=rs("rolename")
     rs.movenext
    Next


    '******************关闭连接********************
    con.close

    '****************释放Connection对象*******************
    Set con=nothing

  • 如何连接Oracle数据库5:QTP脚本示例-ODBC连接方式(四)

    2008-4-21

    'ODBC的系统DSN连接方式,数据源的驱动为“Microsoft ODBC for Oracle”

    '**********创建连接对象***************
    Set con=createobject("adodb.connection")

    '连接设置。等号后面的值可以通过以下方法获得:
    '1.选择菜单  Insert>Output Value>DataBaseOutPutValue,打开“Database Query Wizard”窗口
    ''2.Query definition选择“Specify SQL statement manually”,点击“下一步”到下一窗口。
    '3.点击“Create”,选择文件数据源,回到前一窗口。(注:ODBC文件数据源必须预先设置好)
    '4.复制Connection string框中的内容,该内容即为连接设置。
     conset="DSN=CIIS2;UID=cis;PWD=ciis;SERVER=CIIS_192.168.1.27;"
     
     '**************建立连接********************
    con.open conset
    '查看连接是否已建立
    If  con.state=0 Then
     msgbox"failed"
     else
     msgbox"pass"
    End If

    '***************建立空的记录集*************
    Set rs=createobject("adodb.recordset")

    '*************设置SQL语句******************
    sql="select * from sys_role"

    '**************打开记录集,语法:recordset.Open Source, ActiveConnection, CursorType, LockType, Options*********************
    rs.open sql,con

    '将记录集中"rolename"列的0-6行数据Copy到QTP当前DataTable的"OK"列中
    For i=0 to 6
     datatable.SetCurrentRow(i+1)
     datatable.Value("ID","ODBC4")=rs("ID")
     datatable.Value("NAME","ODBC4")=rs("rolename")
     rs.movenext
    Next


    '******************关闭连接********************
    con.close

    '****************释放Connection对象*******************
    Set con=nothing

  • 如何连接Oracle数据库4:QTP脚本示例-ODBC连接方式(三)

    2008-4-21

    'ODBC的文件DSN连接方式

    '**********创建连接对象***************
    Set con=createobject("adodb.connection")

    '连接设置。等号后面的值可以通过以下方法获得:
    '1.选择菜单  Insert>Output Value>DataBaseOutPutValue,打开“Database Query Wizard”窗口
    ''2.Query definition选择“Specify SQL statement manually”,点击“下一步”到下一窗口。
    '3.点击“Create”,选择文件数据源,回到前一窗口。(注:ODBC文件数据源必须预先设置好)
    '4.复制Connection string框中的内容
    '5.将DRIVER={Oracle in OraClient10g_home1} 改为 FileDSN=文件路径及文件名 ,该内容即为连接设置。
     conset="FileDSN=E:\QTP_TEST\CiisODBCSource\sys\ODBC1.dsn;SERVER=CIIS_192.168.1.27;UID=cis;PWD=ciis;"
     
     '**************建立连接********************
    con.open conset
    '查看连接是否已建立
    If  con.state=0 Then
     msgbox"failed"
     else
     msgbox"pass"
    End If

    '***************建立空的记录集*************
    Set rs=createobject("adodb.recordset")

    '*************设置SQL语句******************
    sql="select * from sys_role"

    '**************打开记录集,语法:recordset.Open Source, ActiveConnection, CursorType, LockType, Options*********************
    rs.open sql,con

    '将记录集中"rolename"列的0-6行数据Copy到QTP当前DataTable的"OK"列中
    For i=0 to 6
     datatable.SetCurrentRow(i+1)
     datatable.Value("ID","ODBC3")=rs("ID")
     datatable.Value("NAME","ODBC3")=rs("rolename")
     rs.movenext
    Next


    '******************关闭连接********************
    con.close

    '****************释放Connection对象*******************
    Set con=nothing

  • 如何连接Oracle数据库3:QTP脚本示例-ODBC连接方式(二)

    2008-4-21

    'ODBC的无DSN连接方式,数据源的驱动为“Oracle in OraClient10g_home1"

    '********************创建连接对象********************
    Set con=createobject("adodb.connection")

    '***************连接设置。等号后面的值可以通过以下方法获得:*******************
    '1.选择菜单  Insert>Output Value>DataBaseOutPutValue,打开“Database Query Wizard”窗口
    ''2.Query definition选择“Specify SQL statement manually”,点击“下一步”到下一窗口。
    '3.点击“Create”,选择文件数据源,回到前一窗口。(注:ODBC文件数据源必须预先设置好)
    '4.复制Connection string框中的内容,该内容即为连接设置。
    conset="DRIVER={Oracle in OraClient10g_home1};SERVER=CIIS_192.168.1.27;UID=cis;PWD=ciis;DBQ=CIIS_192.168.1.27;DBA=W;APA=T;EXC=F;XSM=Default;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;BTD=F;BAM=IfAllSuccessful;NUM=NLS;DPM=F;MTS=T;MDI=Me;CSR=F;FWC=F;FBS=60000;TLO=O;"

    '*********************建立连接*********************
    con.open conset

    '查看连接是否已建立
    If  con.state=0 Then
     msgbox"连接失败"
     else
     msgbox"连接成功"
    End If

    '************创建空的数据集********************
    Set rs=createobject("adodb.recordset")

    '************设置SQL语句********************
    sql="select * from sys_role"

    '**************打开记录集,语法:recordset.Open Source, ActiveConnection, CursorType, LockType, Options*********************
    rs.open sql, con

    '将记录集中"rolename"列的0-6行数据Copy到QTP当前DataTable的"OK"列中
    For i=0 to 6
     datatable.SetCurrentRow(i+1)
     datatable.Value("ID","ODBC2")=rs("ID")
     datatable.Value("NAME","ODBC2")=rs("rolename")
     rs.movenext
    Next


    '******************关闭连接********************
    con.close

    '****************释放Connection对象*******************
    Set con=nothing

  • 如何连接Oracle数据库2:QTP脚本示例-ODBC连接方式(一)

    2008-4-21

    'ODBC的无DSN连接方式,数据源的驱动为“Microsoft ODBC for Oracle”

    '**********创建连接对象***************
    Set con=createobject("adodb.connection")

    '连接设置。等号后面的值可以通过以下方法获得:
    '1.选择菜单  Insert>Output Value>DataBaseOutPutValue,打开“Database Query Wizard”窗口
    ''2.Query definition选择“Specify SQL statement manually”,点击“下一步”到下一窗口。
    '3.点击“Create”,选择文件数据源,回到前一窗口。(注:ODBC文件数据源必须预先设置好)
    '4.复制Connection string框中的内容,该内容即为连接设置。
     conset="DRIVER={Microsoft ODBC for Oracle};SERVER=CIIS_192.168.1.27;UID=cis;PWD=ciis;"
     
     '**************建立连接********************
    con.open conset
    '查看连接是否已建立
    If  con.state=0 Then
     msgbox"failed"
     else
     msgbox"pass"
    End If

    '***************建立空的记录集*************
    Set rs=createobject("adodb.recordset")

    '*************设置SQL语句******************
    sql="select * from sys_role"

    '**************打开记录集,语法:recordset.Open Source, ActiveConnection, CursorType, LockType, Options*********************
    rs.open sql,con

    '将记录集中"rolename"列的0-6行数据Copy到QTP当前DataTable的"OK"列中
    For i=0 to 6
     datatable.SetCurrentRow(i+1)
     datatable.Value("ID","ODBC1")=rs("ID")
     datatable.Value("NAME","ODBC1")=rs("rolename")
     rs.movenext
    Next


    '******************关闭连接********************
    con.close

    '****************释放Connection对象*******************
    Set con=nothing

  • 如何连接Oracle数据库1

    2008-4-21

    看到好多人都热衷于用QTP链接数据库,对数据库进行操作,而我却还不会,感觉很落伍。

    于是我也很想用QTP连接到数据库,看个究竟。虽然我现在还没发现使用这个操作的实际意义,它在我的脚本中暂时还没有用武之地。

    网上搜了一下,发现了很多热心的网友提供了脚本例子,套一下,就直接可用了,可是我记忆力太差了,总记不住,因为我不理解它。(对不起,我基础差。)

    在网上找了很长时间,终于找到两篇对我有帮助的文章,如下。第一篇出处不记得了。

    ----------------------------------------------------------------------------

    文章1:数据库链接方式

    一、OLE-DB连接方式 

    1  字符串方式

    ConnectionString="Provider=SQLOLEDB.1; Data Source=YourSrc;

    UID=YourUid; PWD=YourPwd; Database=YourDB"

    ConnectionString="Provider=SQLOLEDB.1; Data Source=YourSrc;

    User ID=YourUid; Password=YourPwd; Initial Catalog=YourDB"

    其中,Provider为服务于连接的底层OLE-DB数据供应程序的名称;Data Source为服务于底层数据供应程序的数据源名称;UID或User ID为连接时使用的用户名;PWD或Password为连接时使用的密码;Database或Initial Catalog为位于数据库服务器上的一个特定数据库。

    2  数据链接文件方式

    创建一个空文本文件,将其扩展名改为.udl来创建一个数据链接文件。双击该文件打开Data Link Properties对话框,在Provider页选择提供者(不要选择基于ODBC的提供者,因为这样实际上是间接藉由ODBC实现数据库连接),在Connection页指定实现连接的细节。使用数据链接文件进行连接的ConnectionString如下:

    ConnectionString="File Name=C:YourFile.udl"

    用记事本打开数据链接文件,可以看到第三行文本是一个连接字符串,指定了连接的细节。如果在Connection页选中了“Allow saving password”,则在该文件中也会记录用户的密码信息。

    二、ODBC连接方式 

    使用ODBC连接方式,首先要配置ODBC数据源。ODBC数据源配置成功后,就可以相应指定下面介绍的连接字符串进行数据库连接。

    1  ODBC的系统DSN连接方式

    ConnectionString="DSN=SysDSNName;UID=YourUid;PWD=YourPwd;Database=YourDB"

    其中,DSN为系统DSN的名称,其它参数与3.1中介绍的参数相同。

    2  ODBC的文件DSN连接方式

    ConnectionString="FileDSN=FileDSNName;UID=YourUid;PWD=YourPwd;Database=YourDB"

    其中,FileDSN为文件DSN的名称,其它参数与3.1中介绍的参数相同。

    用记事本打开相应的.dsn文件(一般位于C:Program FilesCommon FilesODBCData Sources目录下),可以看到,类似于数据链接文件,该文件中也指定了连接的细节。

    3  ODBC的无DSN连接方式

    ConnectionString="Driver={SQL Server};Server=YourServer;

    UID=YourUid;PWD=YourPwd;Database=YourDB")

    此方式不用配置ODBC数据源。其中,Driver为ODBC驱动程序名称,Server为数据库服务器名称,其它参数与3.1中介绍的参数相同。

    4  数据链接文件方式

    首先,采用3.2中的方法创建数据链接文件。但进行文件配置时,在Provider页中选择基于ODBC的提供者——Microsoft OLE DB Provider for ODBC Drivers。此方式的ConnectionString与3.2中介绍的相同。

    三、实例

    下面是采用OLE-DB的字符串方式,连接到SQL Server2000数据库的示例代码:

    ConnectionString="Provider=SQLOLEDB.1; Data Source=YourSrc;

    UID=YourUid; PWD=YourPwd; Database=YourDB";初始化连接字符串

    Set Conn=Server.CreateObject("ADODB.Connection")  ;创建Connection对象

    Conn.Open  ConnectionString                       ;调用Open方法,建立连接

    …                                                ;进行数据存取操作

    Conn.Close                                        ;关闭连接

    Set Conn=Nothing                                  ;释放Connection对象

    需要注意的是,应尽可能晚的建立连接,同时又尽可能早的关闭连接,这样保证连接打开的时间最短,可以充分发挥OLE-DB的连接缓冲池的作用,节省连接资源。

    文章2:http://bbs.51testing.com/viewthread.php?tid=87825&highlight=oracle

    -----------------------------------------------------------------------------

    后面几篇是我的脚本代码示例。

  • 使用描述性编程(从QTP的帮助翻译而来)

    2007-9-03

    使用编程性描述(Using Programmatic Descrīptions

    在录制脚本时,QTP会将被测对象添加到对象仓库中。只要对象存在于仓库中,我们就可以在专家视图中使用该对象进行手动添加脚本。在脚本中,我们一般都使用对象的名称(该对象名称不区分大小写)作为对象描述。

    例如:

    在下面的语句中“username”是一个编辑框的名称。这个编辑框位于某页面(Page)之上(该页面的名称为“Mercury Tours”),并且该页面属于名为“Mercury Tours”的浏览器(browser)。

    Browser("Mercury Tours").Page("Mercury Tours").WebEdit("username")

    因为对象仓库中的对象的名称是唯一的,因此你只要在脚本中指定对象的名称即可。QTP根据指定的对象名称以及它的父对象在对象仓库中找到该对象,然后根据仓库中对象的详细描述从被测试程序中查找并识别对象。

    其实,在QTP脚本中,不使用对象仓库或对象名称,也可以对被测程序中的对象进行操作。为了做到这一点,我们需要在QTP脚本中提供对象的属性及其值的列表。这就是编程性描述。

    当对象不存在于对象仓库之中,而我们又希望操作该对象时,编程性描述就非常有用。如果有多个对象,它们具有某些相同的属性,通过编程性描述,我们可以在这些对象上进行相同的操作;或者某个对象的属性无法确定,需要在运行过程中指定,我们也可以使用编程性描述,来对该对象进行操作。

    例如:在一个页面有多个check box,你不能预知其个数,也不知道所有check box的准确描述,然而你希望选中所有的check box。在这种情况下,你可以使用编程性描述来解决。你只需要让QTP对所有描述为 HTML TAG=input,TYPE=check box的对象执行一个 Set “ON”的操作即可。

    编程性描述的方法有两种:

    方法一:在语句中直接列出对象的属性及值的列表;

    方法二:使用Descrīption对象,为Descrīption对象添加属性及值的集合,然后在语句中直接使用Descrīption对象的名称即可。

    使用第一种方法要简单一些,但是在很多情况下,第二种方法更显得功能强大并更有效率。

    在语句中直接使用编程描述(Entering Programmatic Descrīptions Directly into Statements

    在语句中不使用对象的名称,而是使用对象的描述(指定多对property:=value值)。

    通常语法如下:

    TestObject(“PropertyName1:=PropertyValue1”,”,“PropertyNameX:=PropertyValueX)

    TestObject:指的是测试对象的类名

    PropertyName:=PropertyValue:指的是测试对象的属性及值。每对property:=value用双引号标记,并用逗号隔开。

    注:property value可以是变量。

    注意:在编程性描述中,QTP将所有的property value视为正则表达式。因此,当property value中包括正则表达式特殊字符(如*,?,+)时,要在特殊字符前加“\”

    下面的语句中,使用到了Mercury Tours网页中的一个WebEdit对象,它的NameAuthorIndex3。在运行过程中,QTP就会从网页中查找NameAuthor并且Index3WebEdit对象,并在WebEdit中输入文字“MarkTwain”。

    Browser("Mercury Tours").Page("Mercury Tours").WebEdit("Name:=Author", "Index:=3").Set "Mark Twain"

    注意:如果你对测试对象层级关系中的某个上级对象使用了编程性描述,那么在同一语句中,从该对象开始,它的所有下级对象都必须使用编程性描述,否则QTP不能识别该父级对象的下级对象。

    例如:语句中,层级关系中所有的对象都使用了编程性描述:

    Browser("Title:=Mercury Tours").Page("Title:=Mercury Tours").WebEdit("Name:=Author", "Index:=3").Set "Mark Twain"

    下面的语句中,从层级关系中的某个点开始,使用编程性描述(从Page对象开始):

    Browser("Mercury Tours").Page("Title:=Mercury Tours").WebEdit("Name:=Author", "Index:=3").Set "Mark Twain"

    但是,你不能象下面的语句这样使用编程性描述。(它对BrowserPage对象使用了编程性描述,但是对于WebEdit对象,却又想使用对象仓库中的名称)

    Browser("Title:=Mercury Tours").Page("Title:=Mercury Tours").WebEdit("Author").Set "Mark Twain"

    QTP偿试根据WebEdit的名称在仓库中定位对象,但是却无法在仓库中找到它的父对象。

    For more information on working with test objects, see Working with Test Objects.

    如果在脚本中你要多次使用到相同的编程性描述,可以将对象指定到变量。

    例如,有如下脚本:

    Window("Text:=Myfile.txt - Notepad").Move 50, 50

    Window("Text:=Myfile.txt - Notepad").WinEdit("AttachedText:=Find what:").Set "hello"

    Window("Text:=Myfile.txt - Notepad").WinButton("Caption:=Find next").Click

    你可以将脚本改进为:

    Set MyWin = Window("Text:=Myfile.txt - Notepad")

    MyWin.Move 50, 50

    MyWin.WinEdit("AttachedText:=Find what:").Set "hello"

    MyWin.WinButton("Caption:=Find next").Click

    你还可以使用With语句,将脚本改进为:

    With Window("Text:=Myfile.txt - Notepad")

           .Move 50, 50

           .WinEdit("AttachedText:=Find what:").Set "hello"

           .WinButton("Caption:=Find next").Click

    End With

    For more information about the With statement, see With Statement.

    在编程性描述中使用Descrīption对象(Using Descrīption Objects for Programmatic Descrīptions

    你可以使用Descrīption对象,来返回一个Properties collection对象,该集合对象包括一系列Property对象。每个Property对象由Property namevalue组成。

    然后在语句中用Properties collection对象替代被测对象的名称。

    注意:默认情况下,所有被添加到Properties collection中的Property对象的值被当成正则表达式对待。因此,当Property Value中包含正则表达式的特殊字符(如*?+)时,要在特殊字符前使用“\”符号。

    你也可以在Properties Collection中,将RegularExpression属性值设置为False,这样即使在Property Value中用到了正则表达式的特殊字符,也会被视为普通字符。更多信息参考QuickTest Professional Object Model ReferenceUtility部分。

    要创建Properties collection,使用Dexcription Create语句,语法如下:

    Set MyDescrīption = Descrīption.Create()

    一旦创建了Properties 对象(例如上例中的Mydescrīption,在运行过程中,你就可以使用语句向Properties对象添加、编辑、移除或获取属性及属性值。这使你在运行过程中可以动态的决定:在对象描述中使用哪些属性、使用多少属性。

    当你将一系列的属性及属性值加入到Properties collection中以后,你就可以在脚本语句中用Properties对象替代被测对象的名称。

    例如,有如下语句:

    Window("Error").WinButton("text:=OK", "width:=50").Click

    通过改造,成为:

    Set MyDescrīption = Descrīption.Create()
    MyDescrīption("text").Value = "OK"
    MyDescrīption("width").Value = 50
    Window("Error").WinButton(MyDescrīption).Click

    注:当为一个ActiveX对象创建编程性描述时,如果该对象的run-time对象是windowless的(即没有相应的window handel),就必须在属性描述中将它的windowless property设置为Ture

    例如:

    Set ButDesc = Descrīption.Create
    ButDesc("ProgId").Value = "Forms.CommandButton.1"
    ButDesc("Caption").Value = "OK"
    ButDesc("Windowless").Value = True
    Window("Form1").AcxButton(ButDesc).Click

     

    获取Child ObjectsRetrieving Child Objects

    通过ChildObjects方法,可以获取指定对象下的所有子对象,或只获取那些符合编程性描述的子对象。为了获取某对象的子对象的子集,首先需创建一个descrīption对象,然后在该对象的descrīptions collection中添加一系列的属性及属性值,这些属性及属性值必须符合子集的要求。

    注意:你必须使用Descrīption对象来为ChildObjects描述参数 创建编程性描述,不能使用property:=value语法直接将编程性描述添加到参数中。

    一旦你已经在descrīption对象中“built”了描述,就可以使用下面的语法来获取与描述匹配的子对象:

    Set MySubSet=TestObject.ChildObjects(MyDescrīption)

    例如:下面的语句使QTP选中网页中的所有选择框:

    Set MyDescrīption = Descrīption.Create()

    MyDescrīption("html tag").Value = "INPUT"

    MyDescrīption("type").Value = "checkbox"

    Set Checkboxes = Browser("Itinerary").Page("Itinerary").ChildObjects(MyDescrīption)

    NoOfChildObjs = Checkboxes.Count

    For Counter=0 to NoOfChildObjs-1

           Checkboxes(Counter).Set "ON"

    Next

    For more information about the ChildObjects method, refer to the QuickTest Professional Object Model Reference.

    WebElement对象使用编程性描述(Using Programmatic Descrīptions for the WebElement Object

    如果没有录制WebElement对象,也可以使用编程性描述,来对Web网站中的任何一个WebElement对象进行操作。

    例如:

    Browser("Mercury Tours").Page("Mercury Tours").WebElement("Name:=UserName", "Index:=0").Click

    set WebObjDesc = Descrīption.Create()

    WebObjDesc("Name").Value = "UserName"

    WebObjDesc("Index").Value = "0"

    Browser("Mercury Tours").Page("Mercury Tours").WebElement(WebObjDesc).Click

    QuickTest clicks on the first Web object in the Mercury Tours page with the name UserName.

    关于WebElement对象的更多信息,参考QuickTest Professional Object Model Reference

    在编程性描述中使用Index属性(Using the Index Property in Programmatic Descrīptions

    在需要唯一识别一个对象时,index属性有时候可能非常有用。index属性是对象在源代码中出现的顺序,第1次出现时,index值为0

    Index属性是object-specific的。因此,当你用index属性值“3来描述一个WebEdit对象时,QTP会在被测程序的当前页面中查找第4WebEdit对象。

    如果你使用index属性值3来描述一个WebElement对象时,QTP会在被测程序的当前页面中查找第4Web对象。

    例如,当前页面中存在下面的对象:

    • 一个名为QppleImage对象
    • 一个名为UserNameImage对象
    • 一个名为UserNameWebEdit对象
    • 一个名为PasswordImage对象
    • 一个名为PasswordWebEdit对象

    下面的语句中指的是列表中的第3个对象,因为它要求指向的是第1个名为UserNameWebEdit对象。

    WebEdit("Name:=UserName", "Index:=0")

     

    下面的语句中指的是列表中的第2个对象,因为它要求指向的是第1个名为UserNameWebElement对象。

    WebElement("Name:=UserName", "Index:=0")

    注:如果当前只有一个对象,使用index=0将无法查找到对象,因此就不能在对象描述中使用index属性。

Open Toolbar