版本 7.1

Squish 7.1 是一个功能发布版本,为产品的所有版本带来了新功能、错误修复和易用性改进。

本版本的显著亮点包括

为Squish for Web提供对Shadow DOM的支持

Squish for Web现在可以方便地从所有脚本语言中的测试脚本以及从squishide中访问shadow DOM内部HTML对象。

使用Squish的属性系统,一个新的shadowRoot属性代表shadow树的根(如果存在且打开),可以用来舒适地遍历、检查和验证shadow树内的对象。

更多详细信息可以在HTML_ObjectClassHTML_Object.shadowRoot(https://web-object-api.html#web-html-object-shadowroot-property)API文档中找到。

使用Squish for macOS对基于SwiftUI的应用进行测试

为Squish for macOS添加了对基于SwiftUI应用程序的测试支持。采用新颖的方法,SwiftUI不仅依赖于向AUT中注入Squish钩子,还利用了辅助功能API。

通常可以在一定程度上录制和回放与SwiftUI应用程序中的对象的交互,但可公开的对象属性数量以及调用对象方法的能力受辅助功能API功能的限制。

改进的Squish安装程序

Squish安装程序已升级为使用Qt安装器框架4.1.1。此更改不仅修复了一些长期存在的可用性问题并提高了用户体验,而且还使安装程序具有更统一的Qt样式外观和感觉。

多个Squish服务器

squishide中始终使用多个不同的squishserver一直很繁琐,因为它一次只能记住一个squishserver的连接详细信息。

squishide现在可以配置多个squishserver的连接详细信息,并可以在GUI中轻松在这些配置之间切换。IDE首选项中的新服务器选项卡取代了已删除的远程测试选项卡。

一般

  • 不再将PDF格式的文档包含在Squish包中。
  • 引入了新的testSettings.logScreenshotOnWarning属性,类似于testSettings.logScreenshotOnError,当记录警告时可以捕获截图。
  • 在终端中运行时,squishrunner现在始终使用ANSI颜色为其stdout报告格式。该格式还尊重CLICOLORCLICOLOR_FORCE环境变量,这允许为重定向或文件输出启用颜色,例如在CI系统上。在Windows上,彩色输出需要Windows 10版本1909或更高。

squishide

  • squishide中的控制栏现在具有测试执行进度的视觉指示。
  • 除了显示最近记录或回放的事件外,控制栏现在可以选择在日志控制台中显示之前测试事件的的多行历史记录。
  • 修复了在回放BDD场景轮廓时步骤缺失的问题。
  • 修复了Squish工具首选项页面将有效设置错误地标记为无效的问题。

脚本

  • 捆绑的Python解释器已更新到版本3.10,默认情况下也用于安装。这个版本在以下方面带来改进:
    • 包工具,以及其他Python安装中的可执行文件和脚本,现在可以立即使用。
    • 以前不完整的模块,如sqlite3ctypes,现在完全正常工作。
  • installEventHandler() 以及 uninstallEventHandler() 现在支持将任何参数数量的函数作为事件处理器引用。之前这仅适用于对接受两个参数的函数重载的引用。
  • 修复了在使用JavaScript中的 installEventHandler() 时使用匿名函数可能导致的崩溃。
  • 修复了 snooze() 有时错误地报告来自前一条脚本语句的错误。
  • 修复了表格验证点和 test.xvp() 只报告失败(FAIL)和通过(PASS),但不报告预期失败(XFAIL)和意外通过(XPASS)。
  • 修复了在脚本对象映射文件中使用 test.log 时发生的崩溃。

Qt

  • 添加了对使用 Qt 6.4.x 版本构建的应用程序进行测试的支持。
  • 从 Qt 6.4 版本开始,不再支持使用 Qt 3D 场景的测试。
  • 现在可以在 Squish for Qt 中使用隐藏屏幕键盘的函数(《hideKeyboard()》),之前此功能仅可在 Squish for Android 和 iOS 中使用。
  • 修复了在 Android 和嵌入式平台上的对象突出显示器,使其在 HiDPI 缩放使用设备上显示正确的位置。
  • castToQObject() 现在在以 null 调用时抛出异常。之前,此类使用可能导致 AUT 崩溃。
  • 修复了在 Windows 上使用 offscreen Qt 平台插件时出现的崩溃。
  • 修复了在 Qt 嵌入式平台中使用 xkbcommon 进行键码映射时发生的崩溃。
  • 修复了 object.children() 不返回 QAction 对象的任何子项的问题。
  • 修复了在 findAllObjects() 中搜索包含 occurence 属性的 QModelIndex 对象名称时出现的无限循环。
  • QtQuick 应用程序中拾取和记录现在会忽略屏幕上不显示的透明度为零的项目及其子项。
  • 修复了在 AUT 启动(startApplication())时由于 Hook 到 QtWebEngineProcess 而导致的崩溃。
  • 修复了与 Qt 5.x AUT 中的原生文件对话框交互时出现的冻结问题。该问题是由默认禁用原生文件对话框处理的 UiAutomation 扩展引起的。为了恢复向后兼容的旧行为,编辑 UiAutomation 扩展配置并将 HandleInProcessDialogs 值设置为 true
  • 自 Squish 4 以来已弃用的头文件 include/qtintrusive.h 已从 Qt 内置钩子中删除。为了获得等效功能,请使用 include/qtbuiltinhook.h 并调用 Squish::installBuiltinHook(),有关更多信息,请参阅 Qt 内置钩子 文档。
  • Qt 5.1 和更高版本中内置钩子的使用已简化,以避免修改 AUT 的 main() 函数。对于大多数用例,扩展 qmake 或 CMake 构建规则就足够了。
  • 修复了由于 AUT 代码中的本地事件循环而导致的重新播放 QtQuick 对象可能卡住的问题,即当调用 QDialog::exec() 来显示模式对话框时。

Tk

  • 修复了在携带 glibc 2.34 或更高版本的 Linux 发行版上-hook Tk 应用程序的问题 - 例如 Ubuntu 22.04。
  • 修复了附加到 AUT 时发生崩溃的问题,此时使用拾取工具选择 AUT 对象。

Web

  • Safari 12 现在是可以使用 Squish for Web 自动化的 Safari 浏览器的最低版本。方便的是,Safari 12 已经包含 macOS 10.14 中,这是 Squish 所需的最低 macOS 版本。
  • 修复了使用Firefox 100及更高版本自动化网站时,因内容安全策略(Content-Security-Policy)导致的兼容问题。
  • 修复了在更高版本的Google Chrome和Chromium浏览器中自动化网站的问题,由于跨源资源共享机制(CORS),这将阻止Squish记录器发送记录的事件。
  • 修复了在macOS中拾取HTML元素的问题,这是由于在具有二级显示器的某些显示配置下报告了错误的屏幕坐标。受影响的网页浏览器(Squish for Web)以及Squish for macOS、Java和Qt中的网页视图都受到影响。

Windows

  • 修复了在开始子进程链接(_hookwinaut.exe)期间发生的崩溃,这发生在受影响的过程提前退出或没有GUI时。
  • 修复了在WPF组合框控件上连续点击第二次时,记录“展开”而不是“折叠”的问题。这也适用于MFC组合框控件,当连续两次点击下拉箭头时。

iOS

  • Squish for iOS现在可以用于测试iOS 16上的应用程序。

服务器

  • 修复了在连接到可附加的 AUT 后,squishserver 未退出的问题。

源代码包/从源代码构建

  • 构建 squishrunneride-utils Squish 组件现在需要 Qt 5.9 或更高版本,以及支持 C++11 的编译器。
  • 在 Unix 系统上,现在当传递了 --enable-qmake-config 时,configure 从 qmake 获取有关 arranlib 工具的信息。这有助于使用可能以不同名称提供这些工具的交叉编译工具链进行构建。

©2024 Qt公司 Ltd. 本文档中的文档贡献者是各自所有者的版权所有者。
提供的文档是根据 Free Software Foundation 发布的 GNU 自由文档许可协议版本 1.3 的条款许可的。
Qt 和相应的标志是芬兰的 Qt 公司以及/或世界其他国家的商标。所有其他商标均为各自所有者的财产。