当组件或组件部件(如网格中的组件)存在预置 id 时,如何测试 extjs 应用程序。
我可以为每个组件添加 ID,但如果我错过了一个或多个,并且应用程序又大又复杂怎么办?
ExtJS/Siesta 中是否有一个函数或某些模块允许您在应用程序中定位组件/元素,而不依赖于每个组件的预定义 ID
当组件或组件部件(如网格中的组件)存在预置 id 时,如何测试 extjs 应用程序。
我可以为每个组件添加 ID,但如果我错过了一个或多个,并且应用程序又大又复杂怎么办?
ExtJS/Siesta 中是否有一个函数或某些模块允许您在应用程序中定位组件/元素,而不依赖于每个组件的预定义 ID
首先要非常小心在组件上使用 ID。我已经看到了我与他们相当多的问题。
其次,ExtJS 提供了几种定位组件和元素的方法。不要将两者混为一谈。
对于组件:
加上各种find..
方法
对于元素:
更多关于 DOM 查询http://docs.sencha.com/core/manual/content/domquery.html
使用 Siesta,您可以在定位要点击的位置等时有很多选项:
我的幻灯片中的更多信息:https ://speakerdeck.com/mats/testing-sencha-touch
您可能想查看自动化功能 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 团队成员)。