版本 6.3
Squish 6.3 是一个功能版本,为产品的所有版本带来了新功能。
此外,自 Squish 6.2 以来,对 Squish 的各个版本进行了很多功能和错误修复;请参阅以下部分以查看所有更改的详细列表。
图像搜索
作为基于属性的对象识别的补充,可以基于元素的外观在屏幕上定位元素。这使得可以进行与自定义元素、未知工具包中的控件和主应用程序外的控件的交互。
现在 squishide
具有以下功能:基于图像插入用户交互,如 mouseClick()
和 tapObject()
。搜索是通过新添加的 ScreenRectangle waitForImage(imageFile, [parameterMap], [searchRegion]) 函数进行的。使用的算法仍然非常简单,但未来的版本将提供更复杂的查找选项,以应对颜色和分辨率差异。请参阅 如何进行基于图像的测试 了解自动化象棋应用程序的示例。
当扩展脱离测试状态时,将需要额外的许可证。那时,所有现有客户都将提供时间有限的免费升级选项。
文本和 XML 文件比较
新函数 Boolean test.compareTextFiles(expectedFilePath, actualFilePath) 和 Boolean test.compareXMLFiles(expectedFilePath, actualFilePath) 分别比较两个文本和 XML 文件的内容。与执行字节的简单比较不同,报告了各个行和元素的可能差异。存在一些配置选项,允许在内容和格式上接受不同的差异。
一般
- 显著提高了 squishserver 的稳定性和资源利用率。
- 修复了从运行在 Solaris 上的 squishserver 连接到 AUT 的问题。
- 修复了一个问题,因为该问题导致使用验证点文件执行测试不会生成有效的 XML 版本 3.0 或 3.1 报告文件。
- 修复了与 Ruby 解释器(Windows 和 macOS 软件包)一起分发的 gem 工具发生的问题,使得可以安装额外的 Ruby gems。
- 修复了一个问题,由于该问题,当属性值包含子串
}
时会导致对象查找失败。 - 改进了对 squishrunner 和 squishserver 的无效命令行参数的检测。
- squishrunner 的
--retry
参数现在应该用于 BDD 场景。 - 新的报告生成器版本:
xml3.2
和json1.2
。它们包括重试或场景的重试次数。 - xml2jira 工具现在允许创建和更新请求用户定义的
CustomFields
设置的 JIRA 票据。 - xml2jira 工具现在支持处理涉及自定义票证状态和自定义票证状态转换的用户定义工作流中的票证。
squishide
特定
- PyDev 的 Python 解释器始终自动配置,基于 Squish 安装中
SQUISH_DIR/etc/paths.ini
文件中的PythonHome
项。 - 修复了有时在功能编辑器中查看工具提示时显示错误对话框的问题。
- 当 squishide 启动时 enforce Test Suites 观察窗口打开,因为它对使用 Management Perspective 是至关重要的。
- 修复了在打开包含 BDD 测试的第一测试用例的测试套件时激活 Scenarios 选项卡的问题。
- 增加选项以禁用BDD测试中缺失步骤实现的警告生成。请参阅 编辑 > 首选项 > Squish > BDD支持。
- 支持函数退出到调用者(也称为'步骤返回')。
- 修复了测试数据编辑器上下文菜单中的问题,导致所有项目都失效。
- 改进了在处理包含许多功能文件和场景的测试套件时功能文件编辑器的性能。
- 修复了`squishide`的测试描述编辑器中的bug,导致它将描述显示为单行而不是多行。
- 在进行Android应用程序的仪器化时,`squishide`现在在继续仪器化之前确保系统中可以找到`jarsigner`可执行文件。
- 通过指定测试套件的父目录通过命令行调用`squishide`来支持打开多个测试套件。
- 改进了JavaScript测试中对source(filename)和String findFile(where, filename)的处理,允许源脚本与代码补全和转到声明一起工作。
- 改进了JavaScript中
ToplevelWindow
、BDD和Screen
模块的自动完成。 - 在`squishide`会话之间保存和恢复测试套件和全局脚本视图的选中状态。
- 在系统资源管理器中支持显示套件的测试案例、文件和文件夹。
- 在macOS上创建截图或视觉验证点时,`squishide`窗口不会如预期地非激活。这避免了创建和回放测试时的不同焦点指示器潜在问题。
- 现在可以在首选项对话框中配置用于查看图像文件的图像查看器。
- 现在可以使用`squishide`内部的图像查看器打开测试失败时捕获的屏幕截图。
- 修复了保存对象快照到Windows驱动器的根目录时显示错误消息的问题。
- 改进了在Windows 8及以上版本上运行时的`squishide`的视觉外观。
- 改进了尝试打开既不在测试案例也不在测试套件目录中的测试数据文件时的错误消息。
- 在查看视觉验证点结果时,显示匹配对象的对象层次结构现在按预期工作。
- 在Gherkin编辑器的上下文菜单中的运行场景和记录场景现在仅在实际上可以运行或记录场景时才可用。以前即使场景正在执行或记录,它们也会被启用,点击它们将触发错误。
脚本
- 基于Ruby的BDD测试含有很多步骤定义时的性能改进。
- JavaScript测试的XML模块的稳定性改进。
- 使用source(filename)命令加载外部Tcl文件中的语法错误时的Tcl脚本的稳定性改进。
- testData.put(filename)函数现在允许复制空文件。
- Object waitForObjectItem(objectOrName, itemOrIndex)现在在项目文本为空时可以正确工作。
- 现在可以调用空对象的静态成员函数。
- 在使用Ruby测试脚本中的RemoteSystem对象时不再需要首先发出
include Squish
语句。 - 修正了不同长度的字符串使用JavaScript
Array.sort()
的问题。 - 修正了向Tcl Screen对象传递屏幕索引值时调用
orientation
方法的问题。 - 修复了squishtest Python模块中的bug,导致
setTestResult()
函数创建了过多的报告生成器;现在在第二次调用时该函数会抛出异常。 - 仅macOS:使用squishtest Python模块不再需要设置环境变量
DYLD_LIBRARY_PATH
,并在macOS 10.11和macOS 10.12上与系统Python协同工作。 - 修复了squishtest Python模块中的bug,该bug导致测试执行结束时测试报告无法完全写入。
- 移除了不必要的
SquishRunner.py
便利模块以避免混淆。 - 修正了Perl中枚举值记录的语法,使其在启用
use strict;
时也能正常工作。 - 修复了Perl外部源文件中的断点。
- 现在可以通过testSettings.waitForObjectTimeout配置默认
waitForObject
和类似的脚本函数的超时时间。 - 改进了JavaScript XML对象的内存使用。
- Python的
import
语句现在可以用于测试资源,作为Squish自带的source()
函数的替代。
行为驱动测试
- 运行带有过滤器、跳过的场景(包括场景概述的示例)的BDD测试现在会显示为
跳过
测试结果,过去完全没有报告。 - 运行带有过滤器的BDD测试,如果过滤器导致没有任何场景被执行,则不再执行
OnFeatureStart
和OnFeatureEnd
钩子。 - 现在可以为场景概述的示例部分指定文本描述,类似于特性或场景部分。
- 现在可以为每个场景概述指定多个示例部分。
特定于Qt的
- 添加了对Qt 5.8.0和5.9.0的支持。
- 添加了对QVector2D、QVector3D和QVector4D类型的支持。
- 在
squishide
中添加了对QPalette属性以及子属性的显示支持。 - 修复了Squish for Qt在Android包(使用Qt 5.7)可能导致崩溃的问题。
- 修复了使用非主鼠标按钮重新播放nativeMouseClick(x, y, button)的问题。
- 基于
text
属性优化了对象查找。 - 优化了在Qt模型中访问
QModelIndex
对象。 - 修复了在Windows上运行测试时对于失败的对象查找所报告的"不匹配的属性"集合。
- 修复了Squish for Qt在iOS横屏模式运行时对象高亮显示的问题。
- 修复了鼠标移动时QtQuick键盘输入记录崩溃的问题。
- 修复了对具有名为
name
的定制属性的QObject
子类的对象查找问题。 - 修复了对在某些情况下跳过Squish对象名称中提到的属性的
QObject
子类的对象查找问题,这导致返回了不相关的对象。如果需要,可以通过更改SQUISH_DIR/etc/qtwrapper.ini
配置文件中的QObjectLookupSkipMissingProperties
值来恢复旧行为。 - 在屏幕截图获取失败的平台中,增加了对桌面截图的支持。作为近似,如果可能的话,将捕获当前最大化或全屏顶层窗口的内容。
- 仅将
QWebEngineView对象的支持加载到已加载 QtWebEngineWidgets模块的AUT进程中,以避免AUT启动时发生冻结。 - 修复了在测试脚本中调用
QVariant::toMap()时的崩溃。 - 通过尊重
etc\winwrapper.ini配置文件来决定是否加载与COM对象交互的代码,从而在Windows上改进了依赖项影响。 - 将
autoRaise、 defaultAction和 menu作为只读属性添加到QToolButton中。 - 修复了从
QQuickWidget获取子项的问题,同时也修复了在此视图类型内部支持 QtQuickControls 2.x Popup覆盖。 - 增加了对在macOS上使用Qt 5测试PyQt应用程序的支持。
Java特定的
- 添加了mouseWheel(n)函数。
- 修复了Object waitForObjectItem(objectOrName, itemOrIndex),使其能够正确地等待菜单项准备好。
- 修复了在使用修改后的SWT
.jar文件的应用程序中可能出现的问题。 - 现在正确地滚动到
JTable项目,以便访问。 startjavaaut现在在打开侦听端口之前等待AUT运行起来。 - 修复了一个问题,该问题导致JavaFx WebView控件绑定仅在工作页面加载后短暂工作。
- 提高了在JavaFx WebView控件中遍历HTML对象的稳定性。
- 增加了对SWT浏览器控制的全面支持, enabled了在所有平台和所有浏览器引擎上专门识别HTML对象。
- 为SWT版本4.6添加了HiDPI支持。
- 修复了在macOS上运行Java应用程序时绑定可能出现的问题。
特定于Web的
- 增加了对Microsoft Edge浏览器的测试支持。
- 改进了在用户未安装或安装了过时扩展的情况下启动Firefox或Chrome测试用例时的错误处理。现在在开始测试以及启动浏览器之前,会在
squishide中进行检查,并在启动 webhook辅助进程之前进行检查。如果检查失败,则生成错误并中止浏览器启动。 - 改进了Firefox和Chrome的浏览器扩展安装程序。在记录/运行测试用例(或启动浏览器)时,如果没有检测到功能正常的扩展,
squishide将触发此操作。扩展安装不再是Squish安装程序的一部分。 - 现在将Web应用程序中的文本输入记录到typeText(objectOrName, text)命令,而不是setText(objectOrName, text)命令。
- typeText(objectOrName, text)的行为已更改,现在仅在字段没有焦点时点击字段的开始,以便后续在相同字段上的typeText(objectOrName, text)命令将附加到字段而不是将它们添加到字段。
- 通过删除固定的三秒延迟并依靠要输入的对象的焦点状态,提高了typeText(objectOrName, text)函数的执行速度。
- 向
HTML_TextBase对象添加了 selectAll 方法,可以选中字段中的所有文本。 - 添加了chooseFile(filepath)函数,用于与浏览器中的文件对话框进行交互。
- 修复了在Windows上运行测试时对于失败的对象查找所报告的"不匹配的属性"集合。
- 支持基于Chromium的桌面应用自动化(例如使用CEF、Electron、nw.js构建的应用)。
- 支持过滤由Squish为Web生成的名称中的
id
属性。有关更多信息,请参阅SQUISH_DIR/etc/webwrapper.ini
中的FilterIdPropertyFromGeneratedNames
。 - 当要点击的对象的边界矩形没有宽度和高度时,将使
nativeMouseClick(x, y, button)
失败,因为这通常表明计算出的屏幕坐标也是错误的,并将仅在左上角进行单击。 - 使
nativeMouseClick(x, y, button)
验证最终坐标(元素位置+提供的相对单击参数)是否位于浏览器视口的边界矩形内,如果坐标超出范围,则返回错误。这是Squish避免在桌面上单击某个可能导致自动化系统不可用的位置的措施之一。 - Google Chrome的Squish扩展现在从Chrome商店安装,以避免开发模式警告弹窗。
- 修复了在关闭最后一个标签时有时发生崩溃的问题。
- 修复了关闭测试脚本标签并立即查找另一个浏览器标签名称时,与Microsoft Internet Explorer一起发生崩溃的问题。
- 修复了waitForContextExists(context)总是等待超时(默认20秒)的问题。
- 修改了使用ToplevelWindow.focused()函数的ToplevelWindow对象时改进的错误报告。
- 修复了在链接点击导航到新页面后,Squish无法访问Microsoft Internet Explorer 11中任何元素的问题。
- 修复了在通过浏览器标签中的嵌入式查看器插件显示PDF时,尝试访问Microsoft Internet Explorer中浏览器标签对象的标题时发生的崩溃。
- 不允许在使用Squish 6.3时使用Firefox 57及更高版本,因为Squish使用的扩展与Firefox 57不兼容。
- nativeMouseClick(objectOrName, button)和typeText(objectOrName, text)现在将在激活对应HTML对象的标签以进行交互失败时正确地发出错误信号。
Windows(原生)特定
- 现在包括一个名为AddressbookWPF的WPF示例程序,展示了对WPF控件如
DataGrid
的支持。 - 修复了有时无法记录对.NET应用程序的初始动作的问题。
- 修复了重放.NET应用程序上的测试时可能发生的潜在资源泄露问题。
- 在重放.NET应用程序上的测试时对消失的对象进行了更优雅的处理。
- 修复了在以下情况下访问MFC树视图项目的
text
属性会导致测试执行中止的问题。 - 在通过
--port
开关使用时,startwinaut将打印状态(和错误)消息,以简化与应用程序关联相关问题的诊断。 - 通过Squish for Windows启动的应用程序将不再显示标准WER(Windows错误报告)对话框,以避免阻塞测试执行。
- 使用installEventHandler(eventName, handlerFunctionNameOrReference)函数安装的针对
Crash
事件的脚本处理程序将按预期调用。 - 修复了选择(或在空白Infragistics
UltraGrid
控件上记录单击)时显示错误消息的问题。 - 为了一致性,在Infragistics菜单项和工具栏按钮上公开了新的
text
属性。
macOS专用(Cocoa/Carbon版本)
- 增加了对功能键(F1-F19)的支持,以便于录制和播放type(objectOrName, text)。
iOS专用(iPhone/iPad版本)《a class="plink" href="#ios-specific-iphone-ipad-edition" title="直接链接到本标题">
- 增加了与clickObject(objectOrName)和doubleClick(objectOrName)功能相同的tapObject(objectOrName)函数。为了与其他Squish版本保持一致,记录的是tapObject(objectOrName)函数,而不是clickObject(objectOrName)函数。为了与现有的测试脚本保持兼容,保留了clickObject(objectOrName)和doubleClick(objectOrName)函数。
- 解决了在WKWebView上播放时挂起和崩溃的问题。
- 桌面截图现在在Retina设备上以Retina分辨率捕获。这影响了saveDesktopScreenshot(filename)函数和testSettings.logScreenshotOnFail设置。验证点中的截图行为没有改变。
Android专用
- 向WebView对象类型添加了WebView.evalJS(script)方法。
- 比InvocationTargetException有更好的原生Java方法异常描述。
- 修复了从Squish 6.2回归的问题,防止了从源代码构建时识别不到<IP>:<端口号>网络设备字符串。
- 修复了使用最新Android SDK的APK的测量问题。
- 通过不再将XWalkViewBridge控件(或其子控件)上的文本输入考虑在内,改进了文本输入的录制。
源包
- 已取消对使用Visual Studio 6构建squishserver的支持,使用该编译器从源代码构建Squish/Qt的客户应使用快速安装步骤。
- 修复了使用Qt >= 5.7.0构建时的C++11检测问题。
- 修复了在macOS上针对使用名称前缀的库名构建Qt构建的问题。
- 修复了qtbuiltinhook.pri,以便将Squish for Qt内置钩子包含在qmake项目中以与最新的qmake和Qt Creator版本一起工作。
- 添加了对使用qmake构建squishidl的实验性支持。
- 在构建过程中改进了文件复制的性能,尤其是在使用build install时。
- 添加了对使用Qt 5构建squishrunner和squishide实用工具的支持。
- 修复了在从源代码构建Squish时未启用文档的情况,导致doc/book/Buildsub中的失败断言。
- 修复了源包中将几个数据文件标记为可执行文件的问题。
文档
- 完全重写了Squish for Web教程。
- ApplicationContext attachToApplication(autName)的文档现在包含在所有Squish包中。该函数的文档也已扩展,记录了可以在不指定连接到的主机或端口号的情况下更改超时。
- 更正了Squish for Java教程,该教程不再声称Squish需要知道
swt.jar
文件的路径。
已知问题
有关发布 Squish 6.3.0 后发现的一些重要问题的列表,请参阅 froglogic 知识库上的已知问题页面。
©2024 The Qt Company Ltd. 其中包含的文档贡献的版权属于其各自的所有者。
提供的文档根据 Free Software Foundation 发布的 GNU 自由文档许可协议版本 1.3 许可。
Qt及其相关标志是芬兰和/或其他国家/地区的 The Qt Company Ltd. 的商标。所有其他商标均为其各自所有者的财产。