改进基于 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 将 Password 和 Forgot? 组合成一个字符串以标识对象,然后将以下步骤代码添加到测试脚本中:
AIUtil("text_box", "Password Forgot?").Type
您可以从脚本中删除整个字符串并将代码更改为以下内容,而不会导致测试失败:
AIUtil("text_box", "Password").Type
配置文本识别选项
自定义这些文本识别选项,以在您的应用程序上获得最佳的文本识别:
多种语言的文本识别
要启用 UFT One 的 AI 功能以识别英语以外的其他语言文本,请在“工具”>“选项”>“GUI 测试”>“AI”(或“AI 对象检测”) 中选择相关的 OCR 语言。请参阅AI 对象检测窗格 (选项对话框 > GUI 测试选项卡)。
使用 AI 标识对象时精确匹配文本
基于 AI 的对象标识使用 AI 算法进行文本匹配。AI 文本匹配可以将拼写变体和具有相似含义的单词视为匹配项。
如有必要,您可以临时指导 UFT One 在标识 AI 测试对象时精确查找指定的文本。
在测试中添加 AI 运行设置步骤以设置文本匹配方法。该设置将一直有效,直到您对其进行更改或直到测试运行结束为止。有关详细信息,请参阅《UFT One Object Model Reference for GUI Testing》中的 AIRunSettings 对象。
备注:
- 应用程序中的文本是使用 OCR 标识的。如果 OCR 不准确,则 AI 文本匹配可能比精确文本匹配更成功。
- 精确文本匹配不区分大小写。
使用 UFT One 文本识别设置
指示 AI 使用 UFT One 文本识别设置。这使您可以使用 Google 或 Baidu OCR 云服务或其他 UFT One OCR 引擎,具体取决于您的 UFT One 配置。请参阅AI 对象检测窗格 (选项对话框 > GUI 测试选项卡)。
使用正则表达式
在 UFT One 版本 2023 及更高版本上受支持
在描述用于对象标识的文本时,您可以使用正则表达式。这样,您可以提供对象文本应匹配的模式,而不是指定确切的文本。
这有助于标识应用程序中的动态文本,例如购物车中的总价或库存中的商品数量。
要使用正则表达式,请在 AIUtil.AIObject 或 AIUtil.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 对象标识方法现在使用 location 和 locationData 参数,您可以在其中提供有关对象位置的信息。请参阅 AIObject、FindText 和 FindTextBlock。
提供以下信息:
-
对象的出现,即它的第一次、第二次或第三次出现。
-
方向,即出现次数的计数方向:
FromLeft
、FromRight
、FromTop
、FromBottom
。
例如,AIUtil("button", "ON", "FromLeft", 2).Click
单击应用程序左侧的第二个 ON
按钮。
描述对象在其他 AI 对象附近的位置
提供以下信息:
-
定位标记对象的描述。
定位标记必须是与您描述的对象属于同一上下文的 AI 对象。
定位标记也可以通过其位置来描述。
-
与您描述的对象对比,定位标记对象的方向为:
WithAnchorOnLeft
、WithAnchorOnRight
、WithAnchorAbove
、WithAnchorBelow
。
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”(或“AI 对象检测”) 中更改上下文设置。
备注: 添加的验证会影响测试运行的速度。
要为特定测试运行启用或禁用对象标识验证,请使用 AIRunSettings.VerifyIdentification 对象。请参阅 《UFT One Object Model Reference for GUI Testing》 中的 AIRunSettings 对象。
自动滚动
运行测试时,如果对象未在应用程序中显示,但应用程序屏幕是可滚动的,则 UFT One 会自动滚动以进一步搜索对象。一旦标识出与描述匹配的对象,就不再执行滚动。将找不到后续应用程序页面或屏幕中显示的相同对象。
UFT One 在运行要求在应用程序中不显示对象的检查点时,进行类似的滚动。仅当滚动到后续页面或屏幕时仍找不到对象的情况下,检查点才通过。
默认情况下,UFT One 向下滚动两次。您可以自定义滚动方向和要执行的最大滚动次数,或者在必要时禁用滚动。
-
在“工具”>“选项”>“GUI 测试”>“AI”(或“AI 对象检测”) 中全局自定义滚动,或使用 UFT One 自动化脚本。请参阅AI 对象检测窗格 (选项对话框 > GUI 测试选项卡)。
-
使用 AIRunSettings.AutoScroll 对象在测试运行中临时自定义滚动。请参阅 《UFT One Object Model Reference for GUI Testing》 中的 AIRunSettings 对象。
备注:
-
您还可以在测试中添加步骤以在应用程序内主动滚动。有关详细信息,请参阅 《UFT One Object Model Reference for GUI Testing》 中的 AIUtil.Scroll 和 AIUtil.ScrollOnObject。
-
UFT One 2021 R1 及更高版本: 测试移动应用程序时,仅当您使用 Digital Lab (UFT Mobile) 2021 或更高版本时才支持自动滚动。
更新本地 AI 模型
AI 模型更新功能目前不可用。
UFT One 2021 R1 及更早版本:
您可以打开“AI”>“AI 模型更新”窗格来查看您当前使用的模型版本。
另请参见: