我们正在为使用 ExtJs 构建的 Web 应用程序开发基于 Web 的自动化解决方案。
目前我正在测试各种不同的对象识别技术,以最好的方式识别 Web 元素。
我们想使用 IE 开发者工具 (F12) 来突出显示和选择页面上的 DOM 对象,并且(以某种方式)获取它们对应的 ExtJs 组件(连同其对应的属性,例如 itemId)。
这可以通过代码或其他技术来实现吗?
我们正在为使用 ExtJs 构建的 Web 应用程序开发基于 Web 的自动化解决方案。
目前我正在测试各种不同的对象识别技术,以最好的方式识别 Web 元素。
我们想使用 IE 开发者工具 (F12) 来突出显示和选择页面上的 DOM 对象,并且(以某种方式)获取它们对应的 ExtJs 组件(连同其对应的属性,例如 itemId)。
这可以通过代码或其他技术来实现吗?
我不熟悉用于此类事情的 IE 开发工具,但是我可以尝试针对特定组件及其元素来回答。
您可以通过多种方式定位 Ext 组件:
Ext.ComponentQuery.query(CQselector)
方法(有关示例,请参见文档)Ext.getCmp(componentID)
如果您知道组件 ID由于加载了 Ext 库,因此可以从页面访问这些方法中的任何一个。在 FF 和 Chrome 等浏览器中,您可以直接从控制台执行这些方法。我猜想它们应该可以在 IE 开发工具中使用。
引用 Ext 组件后,您可以通过 .dom 或 .el 或类似属性获取 HTML 元素。或者你可以直接使用Dom 查询。
我相信,如果您设置 id 属性而不是 itemId,您可以获得所需的结果,因为这是作为组件的顶级容器的 html id 属性传递的(我认为!)。尽管考虑到大多数 extjs 组件中使用的嵌套 div/表的数量,但要使其准确地工作有点复杂。祝你好运!
很难说出您要查找的内容,但如果您尝试获取对已呈现的 Ext.Component 的引用,则可以在 HTML 结构中查找您的组件的包装器节点。HTML id 与组件 id 相同。如果你运行var comp = Ext.getCmp('some-id-12345')
并且如果它返回一些东西,你已经找到了一个Ext.Component
.
然后你可以使用
comp.itemId
检索 itemId
您应该查看http://www.illuminations-for-developers.com/一个显示 Ext.Components 的 firebug 插件。
您还可以使用Sencha Page Analyzer查看整个组件树