改进基于 AI 的测试对象标识

移动、Web 和基于 Windows 的 SAP GUI 测试

本主题将讨论一些元素,UFT One 的人工智能 (AI) 对象检测会使用这些元素来支持应用程序中的对象唯一标识。

将文本与对象相关联

与对象关联的文本有助于唯一地标识对象。例如:

AIUtil("input", "USER NAME").Type "admin"

在此步骤中使用 USER NAME 文本来描述对象,确保我们在正确的字段中键入。

当在应用程序中检测对象时,如果字段周围有多个标签,则 UFT One 将看起来最符合逻辑的标签用于对象标识。

但是,如果您决定在对象描述中使用其他标签,UFT One 仍然可以标识对象。

Example: 当在应用程序中检测对象时,按钮与按钮上的文本相关联,而字段则与其标签 (而不是其内容) 相关联。

如果一个字段有多个标签,而 UFT One 选择其中一个进行检测,则 UFT One 在运行使用其他标签描述该字段的测试步骤时,仍会正确标识该字段。

在某些情况下,UFT One AI 将彼此靠近的多个文本字符串组合为一个文本字符串以标识一个对象。

您可以编辑组合的字符串,只保留其中一个用于对象标识。确保删除整个字符串而不是字符串的一部分。

Example:  

对于下面的文本框,UFT One AI 将 PasswordForgot? 组合成一个字符串以标识对象,然后将以下步骤代码添加到测试脚本中:

AIUtil("text_box", "Password Forgot?").Type

您可以从脚本中删除整个字符串并将代码更改为以下内容,而不会导致测试失败:

AIUtil("text_box", "Password").Type

返回页首

配置文本识别选项

自定义文本识别选项,以在您的应用程序上获得最佳的文本识别。您可以在“工具”>“选项”>“GUI 测试”>“AI 对象检测”>“OCR”中设置这些选项中的大多数。请参阅AI 对象检测窗格 (选项对话框 > GUI 测试选项卡)

此外,您可以将 AIRunSettings 步骤添加到测试中以设置文本识别选项。这些设置将一直有效,直到您对其进行更改或直到测试运行结束为止。有关详细信息,请参阅《UFT One Object Model Reference for GUI Testing》中的 AIRunSettings 对象

使用 UFT One 文本识别设置

指示 AI 对象标识使用 UFT One 文本识别设置。这使您可以使用 Google 或 Baidu OCR 云服务或其他 UFT One OCR 引擎,具体取决于您的 UFT One 配置。

如果您使用此选项,全局 UFT One 文本识别设置将生效。请参阅配置文本识别设置

多种语言的文本识别

要启用 UFT One 的 AI 对象检测以识别除英语以外的其他语言文本,请选择相关的 OCR 语言。如果您选择使用 UFT One OCR 设置,则此设置将被忽略。

使用 AI 标识对象时精确匹配文本

基于 AI 的对象标识使用 AI 算法进行文本匹配。AI 文本匹配可以将拼写变体和具有相似含义的单词视为匹配项。

如有必要,您可以临时指导 UFT One 在标识 AI 测试对象时精确查找指定的文本。在测试中添加 AIRunSettings 步骤以设置文本匹配方法。

此选项不可用作全局选项。

备注:  

  • 应用程序中的文本是使用 OCR 标识的。如果 OCR 不准确,则 AI 文本匹配可能比精确文本匹配更成功。
  • 精确文本匹配不区分大小写。

考虑 UI 控件边框

如果屏幕上彼此靠近的文本字符串属于不同的 UI 控件,则它们可能不相关。例如,您可能希望将不同表单元格中的文本标识为单独的字符串,即使它们在屏幕上看起来像一个长字符串。

选项“识别文本时考虑 UI 控件边框”(默认情况下选中) 指示 UFT One 分隔此类字符串。

降低字符串中的噪声

有时,图标、复选标记或其他 UI 元素看起来像字母,会给标识的文本字符串添加“噪声”。选项“降噪特性”(默认情况下选中) 告知 UFT One 从标识的字符串中删除在意外区域或控件中标识的任何字符。

备注: 仅当噪声字符与标识的文本字符串之间用空格分隔时,才会删减噪声字符。

返回页首

使用正则表达式

在描述用于对象标识的文本时,您可以使用正则表达式。这样,您可以提供对象文本应匹配的模式,而不是指定确切的文本。

这有助于标识应用程序中的动态文本,例如购物车中的总价或库存中的商品数量。

要使用正则表达式,请在 AIUtil.AIObjectAIUtil.FindTextBlock 属性的 AIText 参数中使用 AIRegex 对象

有关 UFT One 中支持的正则表达式的详细信息,请参阅正则表达式字符和用法选项

为确保您的正则表达式能够标识正确的文本,您可以使用“工具”>“正则表达式评估器”。有关详细信息,请参阅正则表达式评估器

备注: 基于 AI 的对象标识使用 Python 正则表达式,而其他 UFT One 功能使用 VBScript 正则表达式。对于基本表达式,这些应该是相似的。如果使用上述资源创建的表达式不符合您的要求,请查看 Python 正则表达式的详细信息。

Example: 在 Amazon 上购物时,我们想要找到所购买商品的总价,该价格会在购物车页面出现两次,如下所示:

以下测试使用正则表达式查找并打印此文本:

AIUtil.SetContext Browser("creationtime:=0") 'Set the context for AI
Set regex = AIRegex("Subtotal \(\d item\): \$[\d.]+")
print AIUtil.FindTextBlock(regex, micFromTop, 1).GetText	

将正则表达式与 micAIMatch 结合使用时,可以接受与指定文本模式有一定程度的偏差。因此,在上面的示例中,即使该字符串具有复数 'items’,而正则表达式具有单数 'item’,仍会返回 Subtotal 字符串。

返回页首

通过相对位置标识对象

UFT One 必须能够唯一地标识对象,以便对该对象运行步骤。当多个对象与您的对象描述匹配时,您可以添加对象位置以提供唯一标识。相对于应用程序中的类似对象,该位置可以是序号;相对于其他 AI 对象 (视为定位标记),该位置可以是近端

AIUtil 对象标识方法现在使用 locationlocationData 参数,您可以在其中提供有关对象位置的信息。请参阅 AIObjectFindTextFindTextBlock

描述对象的序号位置

提供以下信息:

  • 对象的出现,即它的第一次、第二次或第三次出现。

  • 方向,即出现次数的计数方向: FromLeftFromRightFromTopFromBottom

例如,AIUtil("button", "ON", "FromLeft", 2).Click 单击应用程序左侧的第二个 ON 按钮。

描述对象在其他 AI 对象附近的位置

提供以下信息:

  • 定位标记对象的描述。

    定位标记必须是与您描述的对象属于同一上下文的 AI 对象。

    定位标记也可以通过其位置来描述。

  • 与您描述的对象对比,定位标记对象的方向为: WithAnchorOnLeftWithAnchorOnRightWithAnchorAboveWithAnchorBelow

UFT One 返回与描述相匹配的 AI 对象,该 AI 对象在指定的方向上与定位标记最近且最对齐。

例如,此测试单击 Linux 文本右侧的 Latest Edition 文本框下方的 download 按钮:

Set latestEdition = AIUtil.FindTextBlock("Latest Edition")
Set linuxUnderLatestEdition = AIUtil.FindText ("Linux", micWithAnchorAbove, latestEdition)
AIUtil("button", "download", micWithAnchorOnLeft, linuxUnderLatestEdition).Click

备注: 当您通过相对位置标识对象时,例如在录制会话或“AI 对象检查”窗口中添加与对象的关系时,应用程序大小必须保持不变才能成功运行测试脚本。

返回页首

使用图像描述控件

如果应用程序包含 AI 对象标识不支持的控件类型,则您可以提供该控件的图像,UFT One 可使用它来标识控件。通过注册为自定义类,指定您希望 UFT One 用于此控件类型的类名。

AIUtil.RegisterCustomClass "door", "door.PNG"
AIUtil("door").Click 

有关更多详细信息,请参阅《UFT One Object Model Reference for GUI Testing》中的 AIUtil.RegisterCustomClass method

一旦注册了自定义类,就可以在 AIUtil 步骤中将其用作控件类型:

  • AIUtil("<Myclass>")
  • AIUtil("<Myclass>", micAnyText, micFromTop, 1)
  • AIUtil("<Myclass>", micAnyText, micWithAnchorOnLeft, AIUtil("Profile"))

您甚至可以使用它来描述定位标记对象,然后将其用于标识附近的其他对象:

AIUtil("profile", micAnyText, micWithAnchorOnLeft, AIUtil("<Myclass>") )

备注:  

  • 您不能将注册的类用作定位标记来通过接近度标识另一个注册的类。
  • 用于描述控件的图像必须与控件精确匹配。

返回页首

验证对象标识

为了提高测试运行成功率,UFT One 在执行操作之前验证对象标识。当应用程序中的对象在运行时更改位置时 (例如它们被广告覆盖或滚动到新位置),这很有用。UFT One 如果发现对象移动,则在新对象位置上执行操作。

如果验证无法定位标识的对象,则 UFT One 在最初标识的对象位置执行操作。运行结果报告中会显示一条警告消息。

默认情况下,对非移动上下文启用对象标识验证,对移动上下文禁用对象标识验证。您可以在“工具”>“选项”>“GUI 测试”>“AI 对象检测”中更改上下文设置。

备注: 添加的验证会影响测试运行的速度。

要为特定测试运行启用或禁用对象标识验证,请使用 AIRunSettings.VerifyIdentification 对象。请参阅 《UFT One Object Model Reference for GUI Testing》 中的 AIRunSettings 对象

返回页首

自动滚动

运行测试时,如果对象未在应用程序中显示,但应用程序屏幕是可滚动的,则 UFT One 会自动滚动以进一步搜索对象。一旦标识出与描述匹配的对象,就不再执行滚动。将找不到后续应用程序页面或屏幕中显示的相同对象。

UFT One 在运行要求在应用程序中不显示对象的检查点时,进行类似的滚动。仅当滚动到后续页面或屏幕时仍找不到对象的情况下,检查点才通过。

默认情况下,UFT One 向下滚动两次。您可以自定义滚动方向和要执行的最大滚动次数,或者在必要时禁用滚动。

备注: 您还可以在测试中添加步骤以在应用程序内主动滚动。有关详细信息,请参阅 《UFT One Object Model Reference for GUI Testing》 中的 AIUtil.ScrollAIUtil.ScrollOnObject

返回页首

更新本地 AI 对象模型

UFT One 的 AI 引擎使用 AI 对象模型来促进基于 AI 的测试活动。当您安装和启用 UFT One 的 AI 对象检测时,系统会自动安装并激活 AI 对象模型。
AppDelivery Marketplace 上会定期在线提供新的 AI 对象模型。新模型可以更准确地支持控件,甚至识别额外的控件。当有新模型可用时,您可以更新本地正在使用的 AI 对象模型,而无需等待下一次 UFT One 升级。

如有必要,您可以还原到更新前使用的模型。

备注: 如果您使用的是 远程 AI 对象检测服务,则更新本地 AI 对象模型不影响 AI 对象标识。

如果有比您正在使用的模型更新的模型,当您打开 UFT One 时,桌面右下角会显示一条通知。您可以从 UFT One 用户界面或命令行更新本地 AI 对象模型。

UFT One 用户界面更新 AI 对象模型

  1. 先决条件: 在“工具”>“选项”>“GUI 测试”>“AI 对象检测”>“模型”中,配置 Marketplace 连接信息。

    请参阅AI 对象检测窗格 (选项对话框 > GUI 测试选项卡)

  2. 在工具栏中选择“AI”>“AI 对象模型更新”

    在打开的“AI 对象模型更新”对话框中,可以看到您正在使用的模型以及可下载的可用模型。适用于 Web 和移动上下文的活动模型和最新可用模型均带有此类标签。“基本模型”标签标记了随您正在使用的 UFT One 版本提供的开箱即用模型版本。

  3. 选择 AI 对象模型版本并单击“下载”

    模型的“状态”列显示下载进度。

    下载可能需要一些时间。您可以关闭对话框并继续您的工作。下载完成后,桌面右下角会显示通知。

  4. 单击“激活模型”

    新模型激活后,它立即由 UFT One 的 AI 引擎使用。下次打开“AI 对象模型更新”对话框时,该模型将被标记为活动状态。

从命令行界面更新 AI 对象模型

要从命令行更新活动 AI 对象模型,请运行 ModelInstallApp.exe 命令。这是为在 UFT One 计算机中没有网络连接的用户设计的。将模型下载到一台计算机并为所有 UFT One 计算机进行更新。

准备

  • Marketplace 下载 ModelInstallApp.zip 文件并提取其内容。

  • Marketplace 中,找到您要激活的模型。将模型和配置 zip 文件下载到本地文件夹中。

语法

在命令行工具中运行以下语法:

ModelInstallApp.exe --model <模型 zip 文件> --config <配置 zip 文件>

另请参见: