Flex:在点击级别测试 UI 组件?

Posted

技术标签:

【中文标题】Flex:在点击级别测试 UI 组件?【英文标题】:Flex: Testing UI components at the click level? 【发布时间】:2009-07-13 16:49:01 【问题描述】:

我一直在开发一个 Flex 组件,我想为它编写一些自动化测试。问题是,我看过的 UI 测试工具(FlexMonkey 和Selenium Flex API)不能模拟“足够”:

目前出现的大多数错误都与 Flex 处理拖放的方式有关,这些库无法足够准确地模拟。例如,我需要测试在组件的下半部分发生“drop”事件的情况——FlexMonkey 和 Selenium Flex API 都无法做到这一点(它们可能会模拟鼠标事件,但不会包含坐标)。

那么,有没有什么“好”的方法来自动化这种测试?

编辑:经过大量研究,看起来唯一可以做到这一点的软件是iMacros,它仅适用于 Windows,界面......缺乏。所以我要自己写。基本上,它将在java.awt.Robot 上放置一个HTTP 接口,因此代码(任何语言)都可以模拟鼠标/键盘事件。如果您有兴趣,请PM我,我会及时通知您。

编辑 2:我已经在 BitBucket:http://bitbucket.org/wolever/blunderbuss/ 上发布了我编写的框架的第一个版本 Blunderbuss。您需要 Jython 来运行它 (http://www.jython.org/),但之后 flex-client 示例应该可以工作。

视频在 Vimeo 上直播 Blunderbuss:

Automating Flex testing with Blunderbuss Blunderbuss test suite running

目前这仍然是一个概念验证,因为我还没有周期来清理它并使其更可用......但也许有足够多的人打扰我会给我那个时间:)

【问题讨论】:

【参考方案1】:

我使用Eggplant 来测试 Flash 和 AIR 应用程序,而无需在代码中添加任何挂钩。这是一个很棒的工具,但它非常昂贵。它通过 VNC 进入系统模拟真实用户,并使用图像识别(除其他外)与应用交互。

【讨论】:

【参考方案2】:

我绝对对您的自定义 Java 类感兴趣,并且(尽管我在 Java 方面还不是最擅长的(目前...)),如果您正在考虑进行这种协作,我愿意提供帮助。

关于 Flash MouseEvents。不幸的是,实际上并没有准确的方法来模拟 Flash 中的拖放体验。当由鼠标生成时,MouseEvents 的处理方式与常规事件非常不同,虽然您可以通过将事件传递给处理函数或让调度程序触发新的 DragEvent(DragEvent.DRAG_DROP...,它与让用户与之交互不同。对于某些功能(例如访问剪贴板),Flash 中的任何内容都无法实现您的目标。

说实话,您可能正朝着正确的方向前进 - 使用非 Flash 编写的东西来驱动伪造的鼠标事件可能是您最好的选择。

【讨论】:

感谢克里斯托弗的评论。我已经用 Blunderbuss 的链接更新了问题,这是我已经启动的测试框架。【参考方案3】:

我从来没有在 Flex 中使用过它,但我最近偶然发现了一些关于 MS Surface SDK 中自动化包的信息......鼠标移动到这一点,执行这个动作。当您使用Flex mx.automation packages and classes 时。我的猜测(和希望)是你可以使用这些类实现你想要的。

【讨论】:

不幸的是 mx.automation 包不能满足我的需要。它依赖于组件告诉它发生了什么(例如,按钮会说“我已被点击”),但我需要得到比这更低的级别。【参考方案4】:

您也可以尝试自动热键 - 它同样是一个宏编辑程序,但它已被证明非常有效,您可以编写脚本并非常轻松地进行设置。

【讨论】:

不幸的是,它仅适用于 Windows... :(

以上是关于Flex:在点击级别测试 UI 组件?的主要内容,如果未能解决你的问题,请参考以下文章

ArkUI对于Flex布局与基础组件&&声明式UI-组件封装&&父子组件相互绑定的运用OpenHarmony/HarmonyOS

在 ActionScript 3.5/Flex 中,如何将边框应用于用户单击的任何 UI 组件或容器?

我应该何时(而不是如何)在 Android 上测试 UI 组件?

微信小程序 | 51,live新课“小程序UI容器组件”的课堂计划

在 Swift 3 UI 测试中访问自定义视图组件中的元素

flex 自定义组件