将DOM元素id追溯回其ExtJs组件

时间:2012-11-05 15:43:36

标签: dom extjs automation webautomation

我们正在为使用ExtJ构建的Web应用程序开发基于Web的自动化解决方案。

目前我正在测试各种不同的对象识别技术,以最佳方式识别网页元素。

我们希望使用IE开发人员工具(F12)在页面上突出显示并选择DOM对象,并(以某种方式)获取相应的ExtJs组件(以及相应的属性,例如itemId)。

这可以通过代码或其他技术来实现吗?

3 个答案:

答案 0 :(得分:6)

我不熟悉IE Dev工具,但是我可以尝试回答特定组件及其元素的定位。

您可以通过多种方式定位Ext组件:

  1. Ext.ComponentQuery.query(CQselector)方法(see docs for examples
  2. Ext.getCmp(componentID)如果您知道组件ID
  3. 来自任何容器/组件的
  4. up()和down()方法。这些也采用CQselector表达式
  5. 自加载Ext库以来,可以从页面访问任何这些方法。在FF和Chrome等浏览器中,您可以直接从控制台执行这些方法。我猜它们应该可以在IE开发工具中使用。

    一旦引用了Ext组件,就可以通过.dom或.el或类似属性获取HTML元素。或者您可以直接使用Dom query

答案 1 :(得分:0)

我相信如果你设置id属性而不是itemId,你可以实现所需的结果,因为它作为组件的顶级容器的html id属性传递(我想!)。考虑到大多数extjs组件中使用的嵌套div /表的数量,让它精确地工作有点复杂。祝你好运!

答案 2 :(得分:0)

很难说出您要查找的内容,但如果您尝试获取对呈现的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查看整个组件树