自动参数化表和网格单元格的值
使用测试时,如果您修改表或网格中单元格的值,UFT One 会默认录制 SetCellData 语句。如果要修改单个表或网格中的多个单元格的值,然后参数化测试,以便在每次运行测试操作时将不同的值输入到单元格中,请单独或通过启用“自动参数化表和网格控件”选项来参数化每个语句。
选中此选项后,UFT One 将自动捕获在录制会话期间为特定表或网格设置的所有值,并将这些值存储在“数据”窗格的特定数据表中。UFT One 将在测试中插入单个 SAPGuiTable.Input, SAPGuiGrid.Input, 或 SAPGuiAPOGrid.Input 语句,以指向此新数据表。运行测试之前,可以轻松修改这些值,或在每次操作迭代时将附加数据集添加到数据表中。
注释: 您还可以通过此选项在使用 Business Process Testing 应用程序代码注入专用工具包识别流时启用对表参数的创建。
UFT One 如何在自动参数化模式下录制
使用“自动参数化表和网格控件”选项进行录制,以及执行在设置表或网格单元格值后将数据发送到 SAP 服务器的操作时,UFT One 将:
-
新建数据表来表示表或网格。每个数据表均是操作的子表,在该操作录制了表或网格操作。数据表名称始终是操作名称后跟句点 (.) 及表或网格的内部名称。例如: Action1.FLIGHT_TABLE
注释: 工作表名称不能超过 31 个字符。因此,如果操作+表名称组合太长,系统会在保持唯一性的同时自动缩短名称。
-
向要在其中录制的每个表或网格列的数据表添加列。数据表中列的名称通常与应用程序中的列的名称相同。
如果应用程序中的某一列没有标题,或者多个列标题具有相同名称,UFT One 将按以下名称格式插入列: _ _<索引>,其中 <索引> 表示您在录制 Input 步骤时根据列位置确定的列号。
-
将录制时使用的值插入数据表中的相应单元格。在其中输入数据的每行均由数据表中的行表示。将为进行录制的行上方的行添加占位符 (空) 行。例如,如果在第 3、5 和 8 行中设置数据,则将向数据表添加 7 行。第 2、4、6 和 7 行中的单元格不包含任何数据。
-
插入一个附加结束行,该行的第一个单元格的值为 .END。
-
将 Input <数据表名称> 语句 (后跟 SelectCell 语句) 插入测试中。
Input 语句将指示 UFT One 将数据表中的值输入对应于数据表名称的表或网格中,类似于引用“数据”窗格中特定工作表的自动参数化语句。
示例: 假设您更新包含航班信息的表控件中的值。您更新某些航空公司代号、将州以及国家/地区名称添加到某些出发城市和抵达城市、更新其中一个目的地机场代码,并更新某些出发时间。应用程序中编辑后的表可能如下所示:
UFT One 将在测试中插入以下 Input 语句以表示数据输入:
SAPGuiSession("Session").SAPGuiWindow("SAP R/3").SAPGuiTable("SPFLI").Input "Action1.SPFLI"
如果在使用 Enter 键而非 PageDown 键进行滚动的表或网格上录制,则可能需要手动添加 ScrollMethod 可选参数。有关详细信息,请参阅行中需要滚动的数据。
“数据”窗格中的对应数据表如下所示:
数据表有 3 行,因为已在应用程序的表或网格的前 3 行中修改了数据。注意,数据表不包含 Airfare 和 Plane Type 列,因为录制会话期间这些列中的值均未修改。
数据表中的参数化单元格值
UFT One 每次将包含修改后的表或网格单元格数据的信息发送到服务器时,都会插入 Input 语句和新的输入数据表。如果在将信息发送到服务器之前和之后均在特定表或网格的单元格中设置数据,则将得到多个表示相同表或网格的输入数据表以及多个 Input 语句。要获得最佳结果:
-
在录制时 (尤其是在滚动操作会将信息发送到服务器时) 仅在表或网格的可见行中输入数据。可以在编辑测试时将其他行添加到录制的数据集中。
-
在开始在表或网格中输入数据或完成数据输入后执行排序、计算和其他此类操作。
要为每个操作迭代提供不同的数据值,您需要添加新数据集。可通过在之前的结束行下面的相应行和列中输入值来为表或网格添加新数据集。要指示新数据集结束,请将第一组数据的结束行复制并粘贴到新一组数据下面的行。每个数据集中的行数可以不同。
注释: 只有可以找到结束行时,Input 语句才能成功运行。因此,结束行的第一个单元格必须仅包含文本 .END。如果需要,可以将文本输入该行的其他单元格中。例如,可以在结束行的第二个单元格中输入数字,以指示对应于该组数据的迭代编号。
因为输入数据表都添加为当前操作的子表,所以 Input 语句使用对应于当前操作迭代的数据集。例如,如果将操作设置为在所有迭代上运行,并且您的操作表包括 5 行数据,则输入数据表还应包括 5 个数据集以及 5 个 .END 行。
要使用输入数据表中的多组数据,您的操作中必须至少有一个其他“数据”窗格参数,该参数设置为使用当前操作表 (本地)。同时,请确认在运行选项卡 (操作调用属性对话框) 中将该操作设置为运行多个迭代。
示例: 以下输入数据表包含三组数据。第一组数据包含表或网格前三行的数据。第二组数据包含表或网格前两行的数据。第三组数据包含第 3 至 6 行的数据。空白的第一行 (数据表中的第 9 行) 指示不应在表或网格的第一行中输入或修改数据。
注意,在每个 END 行的第二个单元格中手动输入数字可帮助轻松识别每个数据集对应的操作迭代。
行中需要滚动的数据
如果表内的滚动操作会导致将数据发送到服务器,我们建议在录制会话期间仅将数据添加到可见单元格中。如果要在运行会话期间将数据输入到其他行中,则可以在编辑测试时手动将这些行添加到数据表。
如果要为应用程序的表或网格中不可见的行创建输入数据集,则 UFT One 必须在运行会话期间滚动表或网格以插入这些行的数据。如果要为需要添加到表或网格的行创建输入数据集,则 UFT One 必须发送一条添加行的命令。默认情况下,如果数据表中的行数超过应用程序中当前显示的行数,则 UFT One 将发送 PageDown 命令。如果 UFT One 需要使用 Enter 键将其他行添加到表或网格中,则必须在运行测试之前,将可选 ScrollMethod 参数 (使用值 ENTER) 手动添加到 Input 语句中。
例如:
SAPGuiSession("Session").SAPGuiWindow("Create Standard").SAPGuiTable("SAPMV45ATCRTL_V_ERF_").Input "Action1.All items", ENTER