1

当组件或组件部件(如网格中的组件)存在预置 id 时,如何测试 extjs 应用程序。

我可以为每个组件添加 ID,但如果我错过了一个或多个,并且应用程序又大又复杂怎么办?

ExtJS/Siesta 中是否有一个函数或某些模块允许您在应用程序中定位组件/元素,而不依赖于每个组件的预定义 ID

4

3 回答 3

6

首先要非常小心在组件上使用 ID。我已经看到了我与他们相当多的问题。

其次,ExtJS 提供了几种定位组件和元素的方法。不要将两者混为一谈。

对于组件:

加上各种find..方法

对于元素:

更多关于 DOM 查询http://docs.sencha.com/core/manual/content/domquery.html

于 2012-12-05T18:35:44.760 回答
1

使用 Siesta,您可以在定位要点击的位置等时有很多选项:

  • Dom 节点 id(与 Ext Component id 相同)
  • 任何组件查询
  • 任何 CSS 查询
  • 一个坐标
  • 真正的 Ext 组件 JS 实例
  • 真实的 DOM 节点实例
  • 复合查询(组件查询和 CSS 查询的组合,'.x-grid => .x-grid-cell'
  • 一个函数,返回上述任何一个。

我的幻灯片中的更多信息:https ://speakerdeck.com/mats/testing-sencha-touch

于 2012-12-25T11:33:38.247 回答
1

您可能想查看自动化功能 GUI 测试工具RIATest

RIATest 知道如何忽略 ExtJS 动态生成的 id,但是如果您手动为组件分配 id,该工具使用它们进行识别(参见下面示例中的 #tree2)。

RIATest 中的测试根据 ExtJS UI 小部件运行。

使用 ExtJS 小部件的 RIATest 脚本示例:

以下点击带有标签“下一页”的 ExtJS 按钮:

ExtButton("Next Page")=>click();

以下内容将一行从一个 ExtJS 树拖放到另一棵树:

ExtRow("Controller.js")=>dragAndDropTo(
    ExtTreePanel("#tree2")->ExtRow("Custom Ext JS"));

这会折叠 ExtJS 框的标题:

ExtBox("Feeds")->ExtHeader("FeedsВ")->ExtCollapser()=>click();

(以上所有示例代码均来自在 ExtJS 示例应用程序上运行的真实测试脚本)。

(免责声明:我是 RIATest 团队成员)。

于 2013-03-07T19:19:25.607 回答