如何在Selenium中使用由EXTJS生成的ext-gen ID?

问题描述:

在测试自动化Web应用程序时,我获得了动态生成的外部代码ID。我尝试使用xpath,但测试用例失败。我浏览过不同的网站,但没有找到任何运气。有人能帮助我吗?如何在Selenium中使用由EXTJS生成的ext-gen ID?

谢谢 SRINIVAS Marthi

+0

您需要提供HTML页面,并告诉我们你正在尝试做的。 – Ardesco 2011-05-23 10:17:37

+0

你不想在测试自动化期间使用xpath,而不是id?那么你永远不会有问题。 – MacGyver 2014-09-08 21:05:55

我已经成功地与自动化EXTJS网站和自动生成的ID,虽然我不建议这样做。 (因为这些ID自动生成的,如果有新的元素添加到页面中,所有的定位器是无效的,。)

我建议针指向精确的项目,而不是一个完整的路径

//*[@id="ext-js123"] 

使用Selenium的最好的方法是在代码中设置唯一的ID。

由于没有配置按钮,您必须在创建按钮后附加按钮的ID。 在ExtJS的3,我们用来设置按钮ID:

dlg.getDialog().getEl().select('button').each(function(el) { 
    el.dom.id = 'confirm-' + el.dom.innerHTML; 
}); 

不幸的是,这并不在了ExtJS的4工作,所以我要寻找一个新的解决方案也。 ;-)

对于自动化测试,ExtJS的自动生成的ID-s最好完全避免。你可以将自己的静态ID分配给组件,但是现在基本上用全局变量丢弃了你的代码,这也不是很好。使用某些ID-s可能是一种有用的折衷办法,但您不想为每个小按钮分配一个ID。

对于ExtJS的4我建议使用ComponentQuery

Ext.ComponentQuery.query("panel[title='Orders'] button[text='Save']")