已知问题 - Java 插件

打开 Java 应用程序

打开 Java 应用程序时,存在以下限制:

内存问题 如果在打开 UFT One 后无法打开 Java 应用程序,则可能存在由于加载 Windows .dll 文件而导致的内存空间碎片问题。
“无法创建 Java 虚拟机”错误消息

如果显示“无法创建 Java 虚拟机”错误消息,请通过在 mercury.ini 文件中添加一行来激活 UFT One 的内存碎片整理。

在 Windows 文件夹 (%windir%) 中查找 mercury.ini 文件,然后向 Memory_Defrag 部分添加一行,如下所示:

[Memory_Defrag] <process_name>.exe=1

其中,<process_name> 是正在使用的 Java 引擎或应用程序的名称。

要关闭碎片整理,请将值 1 更改为 0

没有错误信息,内存设置得较高也无济于事

如果没有出现错误消息,且 Eclipse 在更高的内存设置下也无法启动,请执行以下操作之一:

  • 使用 64 位 Windows 操作系统和装有 64 位 Eclipse 的 64 位 JVM。

    拥有 64 位虚拟内存空间可免于出现内存碎片问题。

  • 使用 java.exejavaw.exe 文件而非默认的启动文件,强制启动 Eclipse。

    要执行此操作,请通过在两个单独的行中添加以下文本,对 eclipse.ini 文件进行编辑:

    -vm

    <java.exe 或 javaw.exe 文件的完整路径>

  • eclipse.ini 文件中修改 Eclipse 内存设置。

    例如,如果参数设置为 -Xmx512m 时应用程序无法启动,请改为使用 -Xmx256m-Xmx384m 参数设置。

验证错误消息

在使用 Java 版本 8 的计算机上启动应用程序时,如果:

  • 通过 Java jre8u91 启动 Oracle Forms 应用程序或 Java 小程序
  • 通过 Java jre8u45 启动 JavaFX 应用程序

UFT One 将返回 "VerifyError" 错误。

变通方法:-UsesplitVerifier 添加到运行时环境设置的运行时参数中。

返回页首

加载 Java 插件的子插件

当您在“插件管理器”中选择 Java 下的子插件时,则加载针对所选环境的 Java 插件扩展性支持。

如果加载的支持是使用早于版本 10.00 的 Java 插件扩展性 SDK 版本开发的,UFT One 对话框 (如“对象标识”对话框) 会将扩展性测试对象类显示在错误的列表中。

对于显示所选环境的测试对象类的任何 UFT One 对话框,都将发生这种情况。

错误包括:

  • 如果在环境列表中选择子插件,则测试对象类的列表为空。而扩展性测试对象类将直接显示在 Java 环境下,而不是显示在环境列表中的子插件下。

  • 另外,在某些情况下,对象标识对话框中的生成脚本按钮无法正常使用。

在这种情况下,请执行以下操作:

  1. 找到与子插件关联的测试对象配置文件。此文件位于以下位置:

    UFT One 安装文件夹 \dat\Extensibility\Java\<插件名称>TestObjects.xml
    使用 ALM <适用于 ALMUFT One 插件安装文件夹>\dat\Extensibility\Java\<add-in name>TestObjects.xml
  2. 在 XML 文件的 TypeInformation 元素中查找 PackageName 属性,并将其值从 JavaPackage 更改为子插件的名称。

  3. 保存文件,然后重新打开 UFT One

  4. 如果此扩展性支持 (子插件) 由第三方开发,则可能要联系他们以寻求帮助。

返回页首

Java 8 应用程序

启动 Java 8 应用程序可能会导致出现 VerifyError,特别是包含 jre8u91 的 Oracle Forms 和 Java 小程序或包含 jre8u45 的 JavaFX 应用程序。

在这种情况下,请在 Java Runtime Environment 设置中添加 -UseSplitVerifiier 运行时参数。您可以通过 Java 控制面板在系统级别访问这些设置。

每个应用程序类型的设置

应用程序类型 运行时参数设置
jre7u65+ java -XX:-UseSplitVerifier -jar <application.jar>

跨环境测试

在 Java 9 环境中的 Java 8 应用程序上运行测试可能会导致 UFT One 行为异常。

返回页首

录制设置

-Xincgc 标志

java.exe 命令行中添加 -Xincgc 标志会使 Java 支持无法正常工作。

您可以在“录制和运行设置”对话框或批处理文件中执行此操作。

变通方法:

测试 UFT One Java 支持时,请不要在命令行中使用 -Xincgc,或者不要使用动态转换支持机制。

JAR 文件

从“录制和运行设置”对话框的命令行中选择 JAR 文件时,应先手动将 -jar 添加到命令行框中,然后再调用 Java 应用程序。

启动 Java 应用程序

如果打算使用“录制和运行设置”对话框启动 Java 应用程序,而不使用批处理文件 (或其他可执行文件) ,也不使用 -jar 命令行选项 (在选择 JAR 文件之后) ,则应在命令行框中包括 Java 类的完全限定名称。

返回页首

录制

JFC 单行编辑框

如果在 IME 组合窗口的 JFC 单行编辑框中录制键盘操作时,按 Enter 键选择组合字符串,则该按键操作可能会被录制为 Activate 方法,从而生成额外步骤。例如:

JavaWindow("Application").JavaEdit("User Name").Activate

此额外步骤通常不会对运行会话产生负面影响。

变通方法:

在运行测试或业务组件之前,请先删除已录制的额外步骤。

ALT + F4 键盘快捷键

录制或运行不支持 ALT + F4 键盘快捷键。

此快捷方式用于关闭 Java 小程序或 Java 应用程序

变通方法:

  • 在录制会话期间,使用关闭菜单命令或按钮关闭 Java 小程序或 Java 应用程序。

  • 手动添加 JavaWindow(...).Close 步骤。

移动 Java 窗口和调整其大小

默认情况下,不会录制 Java 窗口的移动和调整大小操作。因为某些情况下,这样会导致冗余录制。

变通方法:

要指示 Java 插件录制这些操作,请使用 Setting.Java 方法将 record_win_ops 变量设置为 1

例如:

Setting.Java("RECORD_WIN_OPS") = 1

AWT 弹出式菜单

AWT 弹出式菜单由标准 Windows 控件支持 WinMenu 测试对象 (而不是常见的 JavaMenu 测试对象) 录制。

您无法在此类菜单上执行检查点或活动屏幕操作。

变通方法:

使用其他验证方法 (如使用 GetTOProperty) 。

将鼠标悬停在标识符上

Java 插件不会录制或运行在 Eclipse 窗口中的标识符上方悬停的步骤。

关闭 Java 对话框

当您录制一个关闭 Java 对话框的步骤时,UFT One 会录制一个额外的 Close 语句。

变通方法:

手动删除多余的 Close 语句。

网页内的 Java 小程序或 ActiveX 控件

当交互屏幕在网页上显示 Java 小程序或 ActiveX 控件时,您只能查看该小程序或控件,而无法在对象上执行操作。

例如,创建检查点或添加方法。

变通方法:

在 Java 小程序/ActiveX 控件上录制操作,以在加载了 ActiveX 插件和/或 Java 插件的对象上创建步骤。

然后可以创建检查点、参数化步骤或从活动屏幕的单个 Java 小程序/ActiveX 控件添加方法。

返回页首

对象标识

本机属性

如果您要使用控件的本机属性进行对象标识,您可以在添加/删除属性对话框中将该属性添加到 Java 测试对象。如果您执行此操作,请注意以下事项:

  • 您只能为具有公共 getis 方法 (可返回属性值) 的控件添加本机属性。

  • 如果本机属性名称包括大写字母,则在您创建的对应名称中,您必须使用“_<小写字母>”替换除第一个大写字母之外的所有大写字母。

    例如,要使用本机属性 OneSmallProp,请添加一个名为 One_small_prop 的属性。

区分大小写

在 QuickTest 的早期发布中,Java 描述属性不区分大小写。

如果已识别早于 11.00 的 QuickTest 版本中的测试对象,则需通过执行“更新运行”重新识别属性需区分大小写的对象。

使用“更新测试对象描述”选项来执行此操作。

返回页首

测试对象和测试对象方法

基于 SWT 的 JavaMenu 对象

无法使用“对象存储库”窗口中的“将对象添加到本地”按钮或对象存储库管理器中的“添加对象”按钮直接将基于 SWT 的 JavaMenu 对象添加到对象存储库。

如果要将基于 SWT 的 JavaMenu 对象添加到对象存储库,则可以:

  • 添加父对象,并选择继续添加后代。

    使用“添加对象”或“将对象添加到本地”按钮。

  • 可以使用对象存储库管理器中的“导航并识别”选项添加 JavaMenu 对象。
滚动条控件

AWT 和 Swing 应用程序中的滚动条控件使用 JavaSlider 测试对象表示。

不支持 SWT 应用程序中的滚动条控件。

UFT One 15.0.2 及更高版本: 支持 JavaFX 应用程序中使用 JavaSlider 测试对象表示的滚动条控件。

调用 .Object.startModal

对 JavaInternalFrame 或 JavaDialog 对象的 .Object.startModal 的调用可能会导致 UFT One 出现意外行为,直到对话框关闭为止。

多字节字符

不支持在多行编辑字段对象中使用多字节字符。

按钮对象

对于标签由所显示的图像文件的名称确定的按钮对象,在 JDK 1.6 中运行时命名测试对象的过程与在 JDK 1.5 中运行时所使用的过程不同。这适用于 JavaButton 或 JavaToolbar 中的按钮。

因此,如果您的测试或业务组件包含在 JDK 1.5 中识别的按钮对象,并根据这些对象的图像文件进行了标记,则在 JDK 1.6 中运行该测试或业务组件时,它可能会失败。

变通方法:

  • 对于 JavaButton 对象 —— 重新识别 JDK 1.6 中的对象。

    然后修改该测试,以使用新测试对象;或从对象存储库中删除旧对象并重命名新测试对象,以与在步骤中使用的对象名称匹配。

    请确保在“选项”对话框的“GUI 测试”选项卡的常规窗格中选择重命名测试对象时自动更新测试步骤和业务组件步骤选项 (工具 > 选项 > GUI 测试选项卡 > 常规节点) 。

  • 对于 JavaToolbar 对象中的按钮,修改 JavaToolbar 语句中的 Item 参数,以引用相关按钮。

    可以指定按钮的索引,也可以使用对象侦测器对工具栏按钮进行侦测,然后以 Item 参数提供标签。

PropertyValue 参数

任何 Java 测试对象的 WaitProperty 方法的 PropertyValue 参数 (第二个参数) 都只能是字符串类型。

变通方法:

使用字符串,而不使用原始类型。

例如,使用"1",而不使用1

y = JavaCheckBox("Active").WaitProperty ("enabled", "1", 1000)

返回页首

检查点和输出值

文本检查点和文本输出值

只能为符合特定条件的 Java 对象创建文本检查点和文本输出值。有关详细信息,请参阅Java 对象的文本检查点/输出值步骤

新建表检查点

要在编辑测试或业务组件时在 Java 表上新建表检查点,必须先打开包含要检查的表的应用程序,然后在应用程序中显示该表。

JavaList/JavaTree 对象

如果编辑测试或业务组件时在 JavaList 或 JavaTree 对象上添加检查点,则检查点中无法使用 list_contenttree_content 属性。

变通方法:

录制时,在 Java 列表和 Java 树中创建检查点。

并非始终可见的对象

不完全支持在并非始终可见的对象 (例如从组合框选择或菜单项打开的列表) 上执行检查点。

变通方法:

如果需要临时对象上的检查点,请确保在执行检查点之前对象是可见的。

例如,在使用组合框列表的情况下,应插入语句,指示在执行检查点前单击组合框按钮。

基于 SWT 的 Java 树

进行测试时,如果在基于 SWT 且包含列的 Java 树上创建检查点,则会创建表检查点。

返回页首

在 Internet Explorer 上运行的小程序

在某些情况下,在 Microsoft Internet Explorer 上使用 Oracle Java JRE 5 或 6 运行 Java 小程序时,Java 插件不会将小程序识别为 Java 环境的一部分。

它不会将小程序中的对象识别为 Java 对象,并且无法在这些对象上录制或运行步骤。

当 JVM 不使用环境变量中的 Java 插件的设置时,便会发生这种情况。

在这种情况下,需要在 JVM 运行时参数中设置 “-agentlib:jvmhook -Xbootclasspath/ a:"<UFT One 安装文件夹>\bin\java_shared\classes";"<UFT One 安装文件夹>\bin\java_shared\classes\jasmine.jar"”。

返回页首

JavaFX 应用程序

常规

CloseTab 方法

UFT One 15.0.2 及更高版本: 要在 JavaFX 应用程序的选项卡项上录制 CloseTab 方法,必须首先选择选项卡项。

UFT One 测试只能关闭选定的选项卡,而不能一次性关闭所有选项卡。

UFT One 15.0.1 及更早版本: JavaFX 应用程序不支持 CloseTab 方法。

显示缩放

显示缩放必须设置为 100%,UFT One 才能标识 JavaFX 应用程序中的对象。

将缩放比例设置为 125% 或 150% 会导致 UFT One 将对象识别为标准 Windows 对象而不是 Java。

不支持的方法

JavaFX 对象不支持以下方法:

  • Object.getText
  • JavaCalendar.GetTime
  • JavaWindow.MoveJavaWindow.ResizeJavaWindow.PressKey 方法
JavaTree 的文本检查点

UFT One 15.0.2 及更早版本:

  • 在录制过程中对选择了树项的 JavaTree 插入文本检查点时,UFT One 将捕获文本检查点的选定项。
  • 在录制过程中对选择了树项的 JavaTree 插入文本检查点时,UFT One 将添加文本检查点的空值。

仅限 Web 测试

在 JavaFX 窗口中运行的 Web 应用程序存在以下已知问题:

不受支持的控件
  • 浏览器对话框 (如“警报”、“确认”和“提示”对话框)

  • 模式对话框或无模式对话框

  • 跨域 frame/iFrame 对象

不支持的功能
  • 使用 Web 2.0 工具包设计的 Web 应用程序 (ASP .NET AJAX.Dojo、Google Web 工具包、jQueryUI、EXT-JS、Siebel Open UI 和 Yahoo UI)

  • 浏览器操作

  • 导航并识别

  • 拖放

  • 活动屏幕

  • 在 Frame 或 iFrame 对象上录制

  • 在基于角色的控件 (使用 role=property) 上进行录制

  • “选项”对话框的“Web”>“高级”窗格中的选项

不支持的测试对象和方法
  • 所有浏览器测试对象方法

  • WebFile 对象

  • ViewLink 对象

  • WebXML 对象

检查点 仅支持标准、位图和文本/文本区域检查点。
64 位应用程序 不支持 JavaFX 的 64 位版本
在应用程序中突出显示 JavaFX 菜单和菜单项对象无法在应用程序中突出显示。

返回页首

Java Runtime Environment (JRE)

在某些情况下,安装 Java 插件之后,Java JVM 上运行的 Java 应用程序无法启动。显示的错误消息可能指示无法加载 Mercury Interactive 支持,并且无法创建 Java 虚拟机。

变通方法:

  1. _JAVA_OPTIONSIBM_JAVA_OPTIONS 环境变量的开头添加 -agentlib:jvmhook

  2. 删除 JAVA_TOOL_OPTIONS 环境变量。

返回页首

UFT One 计算机上安装 Java

在安装了 UFT One 的计算机上重新安装或升级 JRE 时,可能会遇到错误 1603,阻止 JRE 安装完成。

这可能是由于 UFT One Java 环境变量和 Java 安装程序之间的干扰引起的。

要成功完成安装,请重命名 UFT One Java 环境变量,执行 JRE 安装并还原变量名称。

临时重命名 UFT One Java 环境变量: 

  1. 在 Windows 桌面上,右键单击“我的电脑”或“这台电脑”,然后选择“属性”

  2. 选择“高级”选项卡。

  3. 单击“环境变量...”按钮。

  4. 在用户变量列表和系统变量列表下查找以下环境变量,然后编辑它们的名称:

    • _JAVA_OPTIONS

    • Java_Tool_Options

    • IBM_Java_Options

  5. 安装 JRE。

  6. 安装完成后,将环境变量名称更改回其原始名称。

返回页首

使用 IntelliJ IDEA 2020.2 或更高版本

IntelliJ IDEA 2020.2 或更高版本建议您删除某些环境变量以确保性能。确保不要删除以下变量,因为它们是测试 Java 应用程序所必需的:

  • _JAVA_OPTIONS
  • JDK_JAVA_OPTIONS
  • JAVA_TOOL_OPTIONS

返回页首