【发布时间】:2012-03-29 22:31:11
【问题描述】:
我想测试一个经过彻底重新设计以使用 ExtJS 驱动其 UI 的网络应用程序。
我已经进行了一些在线搜索,但找不到任何关于一个好的框架来正确处理它的建议。
到目前为止,我们一直在使用 WatiN 来创建测试。
请注意,我们不拥有网络应用代码。
目前最好的选择是什么?
【问题讨论】:
标签: javascript testing extjs automated-tests ui-automation
我想测试一个经过彻底重新设计以使用 ExtJS 驱动其 UI 的网络应用程序。
我已经进行了一些在线搜索,但找不到任何关于一个好的框架来正确处理它的建议。
到目前为止,我们一直在使用 WatiN 来创建测试。
请注意,我们不拥有网络应用代码。
目前最好的选择是什么?
【问题讨论】:
标签: javascript testing extjs automated-tests ui-automation
您应该考虑使用 Siesta,它是一个单元测试和功能测试工具,旨在帮助您测试 Ext JS 和 Sencha Touch(Sencha 内部也使用它来测试 Ext JS 本身)。由于 Siesta 对 Ext JS 了解很多,因此您可以使用 Component Query 而不是 CSS 编写富有表现力的测试,并且与此线程中其他答案中描述的更简单的工具相比,可以获得更健壮的测试。以下是纯 JS 中的示例测试脚本:
t.chain(
{ click : ">>textfield[name=user]" },
{ type : "Mike[TAB]Password" },
{ click : ">>button[name=loginbutton]" }
);
免责声明:我为创建它的公司工作。
【讨论】:
您是希望对您的网页进行直接的功能测试,还是希望将测试范围缩小到 ExtJS 中的 JavaScript?
如果是前者(UI 级别的功能),那么 WatiN/Watir/Webdriver 应该适合您。 (如果他们不工作,那么我很想获得有关您遇到的特定问题的更多详细信息。)
如果是后者,那么您可能会研究 Jasmine,它提供了许多有趣的功能,可在 UI 层对您的 JavaScript 进行单元测试。
(如果是功能测试,您还可以查看 Telerik's Test Studio 以了解功能自动化。我是该工具的传播者,所以我有点偏见......)
【讨论】:
您可能想查看RIATest。
5.0 版完全支持 ExtJS 测试。 ExtJS UI 小部件是 RIATest 中的一等公民。这意味着与其他 HTML 测试工具不同,您不需要编写操作 HTML DOM 元素的测试。 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 还知道何时自动等待 ExtJS AJAX 完成,因此如果您的 UI 下载动态内容,测试将自动神奇地等待,直到从服务器接收到数据。
(免责声明:我是 RIATest 团队成员)。
【讨论】:
Sahi 是我最近使用的自动化和测试工具,因为我与您进行了类似的搜索... Selenium 对我没有用(因为它对网络上的许多人都没有用...还没有找到任何可以做到的东西工作...动态 ID 和其他与 Ext 相关的特殊性显然与它混淆)...
看看 sahi 或许会有用... www.sahi.co.in (我没有关系,我最近发现它,发现它很有用)。
【讨论】:
Ranorex 也可以处理 Ext-J,尽管将其变成一等公民需要一些自定义编码。一般来说,秘诀是避免使用 id 进行对象识别,因为它们会改变并使用 innertext 属性。
【讨论】:
个人发现在某些地方使用带有 extjs 片状的 xpath。
您最好(在 Java 中)编写一个使用 JavaScript 组件查询来提取元素 ID 的方法。 (如果有的话)
【讨论】: